将带有UTC偏移量的string转换为date时间对象

给定这个string: "Fri, 09 Apr 2010 14:10:50 +0000"如何将其转换为datetime对象?

在做了一些阅读之后,我觉得这个应该可以工作,但是它不会…

 >>> from datetime import datetime >>> >>> str = 'Fri, 09 Apr 2010 14:10:50 +0000' >>> fmt = '%a, %d %b %Y %H:%M:%S %z' >>> datetime.strptime(str, fmt) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.6/_strptime.py", line 317, in _strptime (bad_directive, format)) ValueError: 'z' is a bad directive in format '%a, %d %b %Y %H:%M:%S %z' 

应该指出,这工作没有问题:

 >>> from datetime import datetime >>> >>> str = 'Fri, 09 Apr 2010 14:10:50' >>> fmt = '%a, %d %b %Y %H:%M:%S' >>> datetime.strptime(str, fmt) datetime.datetime(2010, 4, 9, 14, 10, 50) 

但我坚持"Fri, 09 Apr 2010 14:10:50 +0000" 。 我宁愿完全转换,不以任何方式改变(或切片)。

它看起来好像strptime并不总是支持%z 。 Python似乎只是调用C函数,而strptime不支持你的平台上的%z

注意:从Python 3.2开始,它将一直工作。