为什么我的 Python 代码不接受 %z 作为 DateTime 指令?



我正在尝试将以下字符串解析为有效的日期时间格式:

Wed, 10 Sep 2014 11:20:58 +0000

为此,我使用了以下Python代码:

dtObject = datetime.strptime(e[attr], '%a, %d %b %Y %H:%M:%S %z')

不幸的是,我得到一个错误说:

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 317, in _str
ptime
    (bad_directive, format))
ValueError: 'z' is a bad directive in format '%a, %d %b %Y %H:%M:%S %z'

根据strptime()文档,%z对于UTC offset in the form +HHMM or -HHMM应该是完全正确的。

有人知道我在这里做错了什么吗?欢迎所有提示

看起来strptime并不总是支持%z(请参阅此答案)
代替strptime,您可以使用dateutil.parser,它运行良好:

>>> import dateutil.parser
>>> s='Wed, 10 Sep 2014 11:20:58 +0000'  #UTC
>>> dateutil.parser.parse(s)
datetime.datetime(2014, 9, 10, 11, 20, 58, tzinfo=tzutc())

>>> s='Wed, 10 Sep 2014 11:20:58 +0100'  #ANOTHER TZ
>>> dateutil.parser.parse(s)
datetime.datetime(2014, 9, 10, 11, 20, 58, tzinfo=tzoffset(None, 3600))

最新更新