我有以下日期:
2005-08-11T16:34:33Z
我需要知道这个日期是在 datetime(2009,04,01)之前还是之后,我似乎无法找到一个将该字符串转换为允许我的字符串的方法将其与 datetime(2009,04,01)进行有意义的比较。
答案 0 :(得分:36)
由于字符串是ISO格式,因此可以直接与您提到的datetime
的ISO格式版本进行有意义的比较:
>>> 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
如您所见,虽然您无法将字符串与datetime对象进行比较,但只要字符串采用ISO格式,就可以将它们与日期时间对象的.isoformat()
进行比较。这就是日期和时间的ISO格式字符串表示的美妙之处:它可以正确比较并正确排序作为字符串,而不必转换为其他类型。
如果你热衷于转换,当然,你可以:
>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2005, 8, 11, 16, 34, 33)
答案 1 :(得分:1)
我建议您查看:http://dateutil.readthedocs.io/en/stable/parser.html
from dateutil.parser import parse
datetime = parse("Sat Oct 11 17:13:46 UTC 2003")
答案 2 :(得分:0)
如果您知道该字符串只使用datetime.datetime(年,月,日,小时,分钟,秒)功能。拆分字符串以获取适当的变量并将其放入以使其成为日期时间类型。然后将它与您需要的任何东西进行比较。
或者你可以像人们建议的那样使用iso格式。