现在要在Python或django中将此字符串转换为日期时间对象?

时间:2010-10-12 20:27:47

标签: python django

现在将此字符串转换为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

4 个答案:

答案 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日期格式。如果您的数据可能包含不同的时区,我建议您使用此模块。