Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parse some abbreviated strings as relative dates #1219

Merged
merged 1 commit into from
Feb 16, 2024

Commits on Feb 15, 2024

  1. Parse some abbreviated strings as relative dates

    dateparser so far did consider strings like "1h20m" as an absolute time.
    This commit changes that, so "1h20" remains an absolute time, while
    "1h20m" is now considered a relative date. This makes the output much
    more predictable and not dependent on the use of whitespaces anymore.
    
    Fixes scrapinghub#1012
    
    Behavior before the changes:
    
    ```python
    >>> from datetime import datetime
    >>> import dateparser
    >>> ref_date = datetime(2023, 1, 2, 3, 4, 5)
    >>> dateparser.parse("1h20", settings={"RELATIVE_BASE": ref_date})
    datetime.datetime(2023, 1, 2, 1, 20)
    >>> dateparser.parse("1h20m", settings={"RELATIVE_BASE": ref_date})
    datetime.datetime(2023, 1, 2, 1, 20)
    >>> dateparser.parse("1h 20m", settings={"RELATIVE_BASE": ref_date})
    datetime.datetime(2023, 1, 2, 1, 44, 5)
    >>> dateparser.parse("1h20m", settings={"RELATIVE_BASE": ref_date,
                                            "PREFER_DATES_FROM": "future"})
    datetime.datetime(2023, 1, 3, 1, 20)
    ```
    
    Behavior after the changes:
    
    ```python
    >>> from datetime import datetime
    >>> import dateparser
    >>> ref_date = datetime(2023, 1, 2, 3, 4, 5)
    >>> dateparser.parse("1h20", settings={"RELATIVE_BASE": ref_date})
    datetime.datetime(2023, 1, 2, 1, 20)
    >>> dateparser.parse("1h20m", settings={"RELATIVE_BASE": ref_date})
    datetime.datetime(2023, 1, 2, 1, 44, 5)
    >>> dateparser.parse("1h 20m", settings={"RELATIVE_BASE": ref_date})
    datetime.datetime(2023, 1, 2, 1, 44, 5)
    >>> dateparser.parse("1h20m", settings={"RELATIVE_BASE": ref_date,
                                            "PREFER_DATES_FROM": "future"})
    datetime.datetime(2023, 1, 2, 4, 24, 5)
    ```
    Dunedan committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    0b9d394 View commit details
    Browse the repository at this point in the history