现在将此字符串转换为Python或django中的日期时间对象?
2010-08-17T19:00:00Z
2010-08-17T18:30:00Z
2010-08-17T17:05:00Z
2010-08-17T14:30:00Z
2010-08-10T22:20:00Z
2010-08-10T21:20:00Z
2010-08-10T20:25:00Z
2010-08-10T19:30:00Z
2010-08-10T19:00:00Z
2010-08-10T18:30:00Z
2010-08-10T17:30:00Z
2010-08-10T17:05:00Z
2010-08-10T17:05:00Z
2010-08-10T15:30:00Z
2010-08-10T14:30:00Z
我这样做datestr=datetime.strptime( datetime, "%Y-%m-%dT%H:%M:%S" )
它告诉我unconverted data remains: Z
答案 0 :(得分:8)
如果您不介意使用方便的dateutil
模块,则可以按原样解析字符串而无需切片。例如,
>>> from dateutil.parser import parse
>>> s = "2010-08-17T19:00:00Z"
>>> parse(s)
datetime.datetime(2010, 8, 17, 19, 0, tzinfo=tzutc())
>>>
答案 1 :(得分:5)
在提供转换字符串之前使用切片删除“Z”
datestr=datetime.strptime( datetime[:-1], "%Y-%m-%dT%H:%M:%S" )
>>> test = "2010-08-17T19:00:00Z"
>>> test[:-1]
'2010-08-17T19:00:00'
答案 2 :(得分:2)
将您的格式字符串更改为“”%Y-%m-%dT%H:%M:%SZ“,以便它包含尾随Z(这使其不再未转换)。但请注意,此Z也许是为了表明时间是UTC,这可能是你需要考虑的事情
答案 3 :(得分:1)
那些似乎是ISO 8601 dates。如果你的时区总是相同的,只需删除最后一个字母,然后用strptime解析它(例如切片)。
Z表示时区,因此请确保在将其转换为不同时区的日期时间时将其考虑在内。如果您的应用程序中的时区可能发生变化,您还必须解析该信息并相应地更改日期时间对象。
您还可以使用pyiso8601 module来解析这些ISO日期,它很可能也适用于略微不同的ISO日期格式。如果您的数据可能包含不同的时区,我建议您使用此模块。