Python 日期时间解析时区 (RFC3339)

Python datetime parse timezone (RFC3339)

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

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

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

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

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

你能做到吗,

strDate = strDate.split('+')

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

这对你有用

您可以使用 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 解析方法开箱即用,可以为您修复该字符串。