关于datetime:在python中使用时区转换ISO 8601日期格式

Converting ISO 8601 date format with timezone in python

我正在尝试将以下日期(2012-12-25t08:52:00-05:00)转换为Python中的日期时间对象。但是,我不知道日期的-05:00部分引用了什么。我只是想执行以下操作:

1
datetime.datetime.strptime('2012-12-25T08:52:00-05:00','%Y-%m-%dT%H:%M:%S')

但这产生了一个预期的"valueerror:未转换的数据仍然存在"。我只是想弄清楚日期的最后一部分是用来做什么的,这样我就可以在Python中将该字符串转换为适当的日期时间对象。

节日快乐!


您的日期似乎是ISO 8601格式,我认为datetime不处理字符串格式末尾的时区信息。

您可以使用pip install python-dateutil,其解析器可以返回datetime对象:

1
2
3
4
import dateutil.parser
datestr = '2012-12-25T08:52:00-05:00'
dateutil.parser.parse(datestr)
>>> datetime.datetime(2012, 12, 25, 8, 52, tzinfo=tzoffset(None, -18000))


-05:00表示时区与UTC的偏移量,即%z将是解析它的正确strptime参数。

如果时间是UTC,则可以使用Z表示偏移量,例如2012-12-25T08:52:00Z。不确定%z是否真的会接受这个…