Python datetime parse timezone(RFC3339)

时间:2016-02-25 13:04:15

标签: python datetime python-datetime

目前我正在编写一个小型python应用程序,我从网络服务器获取以下格式的日期(RFC3339):

2016-01-29T20:00:00+01:00

我必须将此日期解析为python datetime对象,为此我想使用datetime.strptime方法,我必须指定日期的格式,但我不知道如何解析时区(+01:00)我尝试过:

datetime.strptime(strDate, "%Y-%m-%dT%H:%M:%S%z")

但这不起作用。你能告诉我我必须使用哪种格式字符串吗?

2 个答案:

答案 0 :(得分:2)

您可以使用dateutil,但是,如果您使用的是Python 3,则它仅适用于3.2或3.3。它还支持2.6和2.7上的Python 2。

我建议的解决方案:

from dateutil.parser import parse

string = "2016-01-29T20:00:00+01:00"

date = parse(string)

这会给你一个像这样的日期时间对象:

Out[1]: 2016-01-29 20:00:00+01:00
Out[2]: datetime.datetime(2016, 1, 29, 20, 0, tzinfo=tzoffset(None, 3600))

如果您想了解更多信息,请查看dateutil documentation

此外,我认为strptime直接在这里工作的原因是由于' T'在你的日期字符串上。它不是strptime期望的格式。幸运的是,dateutil解析方法可以直接为您修复该字符串。

答案 1 :(得分:1)

你能做到吗,

strDate = strDate.split('+')

datetime.strptime(strDate[0], "%Y-%m-%dT%H:%M:%S")

这对你有用