How to convert a Date string to a DateTime object?

后端 未结 3 1262
遇见更好的自我
遇见更好的自我 2020-11-30 05:06

I have following date:

2005-08-11T16:34:33Z

I need to know if this is date is before or after datetime(2009,04,01) and I can\'t se

相关标签:
3条回答
  • 2020-11-30 05:30

    Since the string is in ISO format, it can be meaningfully compared directly with the ISO format version of the datetime you mention:

    >>> s='2005-08-11T16:34:33Z'
    >>> t=datetime.datetime(2009,04,01)
    >>> t.isoformat()
    '2009-04-01T00:00:00'
    >>> s < t
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: can't compare datetime.datetime to str
    >>> s < t.isoformat()
    True
    >>> z='2009-10-01T18:20:12'
    >>> z < t.isoformat()
    False
    

    as you see, while you can't compare string with datetime objects, as long as the strings are in ISO format it's fine to compare them with the .isoformat() of the datetime objects. That's the beauty of the ISO format string representation of dates and times: it's correctly comparable and sorts correctly as strings, without necessarily requiring conversion into other types.

    If you're keen to convert, of course, you can:

    >>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ')
    datetime.datetime(2005, 8, 11, 16, 34, 33)
    
    0 讨论(0)
  • 2020-11-30 05:46

    I'd recommend taking a look at: http://dateutil.readthedocs.io/en/stable/parser.html

    from dateutil.parser import parse datetime = parse("Sat Oct 11 17:13:46 UTC 2003")

    0 讨论(0)
  • 2020-11-30 05:47

    If you know the string just use the datetime.datetime(year, month, day, hour, minute, second) function. Split your string to get the appropriate variables and put it in to make it a datetime type. Then just compare it against whatever you need.

    Or you can use the iso format as people have suggested also.

    0 讨论(0)
提交回复
热议问题