如何将Date字符串转换为DateTime对象?

20 python datetime

我有以下日期:

2005-08-11T16:34:33Z
Run Code Online (Sandbox Code Playgroud)

我需要知道这个日期是在datetime之前还是之后(2009,04,01),我似乎找不到将该字符串转换为可以将它与日期时间进行比较的方法(2009,04,01) )以有意义的方式.

Ale*_*lli 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
Run Code Online (Sandbox Code Playgroud)

如您所见,虽然您无法将字符串与日期时间对象进行比较,但只要字符串采用ISO格式,就可以将它们与.isoformat()日期时间对象进行比较.这就是日期和时间的ISO格式字符串表示的美妙之处:它可以正确比较并正确排序为字符串,而不必转换为其他类型.

如果你热衷于转换,当然,你可以:

>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2005, 8, 11, 16, 34, 33)
Run Code Online (Sandbox Code Playgroud)