为什么我的Python代码不接受%z作为DateTime指令?
问题描述:
我想下面的字符串解析成一个有效日期时间格式:为什么我的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() docs,%z
应该是完全正确的UTC offset in the form +HHMM or -HHMM
。
有人知道我在做什么错吗?所有的技巧,欢迎
答
看起来好像strptime
并不总是支持%z
(见this答案)
相反的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))
的Z必须资本 – gkusner 2014-09-24 12:49:04