Search code examples
pythonpython-datetimeiso8601

Python: How to compare date string in ISO 8601 format with current time


date_str = '2022-03-29T17:49:35.914417-04:00'

How to compare above date string with current date time?


Solution

  • Try using datetime.fromisoformat(date_string) to parse date_str and then passing the determined timezone info into datetime.now(tz=None):

    >>> from datetime import datetime
    >>> date_str = '2022-03-29T17:49:35.914417-04:00'
    >>> dt = datetime.fromisoformat(date_str)
    >>> dt
    datetime.datetime(2022, 3, 29, 17, 49, 35, 914417, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=72000)))
    >>> dt_now = datetime.now(dt.tzinfo)
    >>> dt_now
    datetime.datetime(2022, 5, 20, 15, 50, 58, 525908, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=72000)))
    >>> dt_now > dt
    True
    >>> dt_now - dt
    datetime.timedelta(days=51, seconds=79282, microseconds=611491)