在python中使用时区转换ISO 8601日期格式

时间:2012-12-25 14:45:47

标签: python datetime iso8601

我正在尝试将以下日期(2012-12-25T08:52:00-05:00)转换为python中的日期时间对象。但是,我无法弄清楚该日期的 -05:00 部分是什么。我只是想尝试执行以下操作:

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

但是这会出现预期的“ ValueError:未转换的数据仍然”。我只想弄清楚日期的最后部分用于什么,以便我可以在python中将该字符串转换为正确的日期时间对象。

节日快乐!

2 个答案:

答案 0 :(得分:5)

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

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

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)) 

答案 1 :(得分:0)

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

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