将具有UTC偏移量的字符串转换为日期时间对象

问题描述

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

从Python 3.2开始,它将始终有效。

解决方法

给定以下字符串:"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"。我宁愿完全转换它,而不以任何方式更改(或切片)它。