将字符串转换为日期时间对象

10

我想将这个字符串转换为日期时间对象:

Wed Oct 20 16:35:44 +0000 2010

有没有一种简单的方法来做这件事?还是我必须编写一个正则表达式来解析元素,将八进制转换为十进制等等?

编辑:strptime很棒。 但是,使用

datetime.strptime(date_str, "%a %b %d %H:%M:%S %z %Y")

我明白了

ValueError: 'z' is a bad directive in format '%a %b %d %H:%M:%S %z %Y'

尽管%z似乎是正确的。

编辑2: 看起来不支持%z标记。请参见http://bugs.python.org/issue6641。我通过使用timedelta对象来适当修改时间来绕过这个问题。

5个回答

28

不需要使用正则表达式。尝试这个:

from dateutil import parser

yourDate = parser.parse(yourString)  

对于"Wed Oct 20 16:35:44 +0000 2010",返回datetime.datetime(2010, 10, 20, 16, 35, 44, tzinfo=tzutc())


2
dateutil不在标准库中,但它可以在PyPI上找到,所以使用“pip install python-dateutil”即可。许可证为PSF。 - Greg Ball
太好了!apt-get install python-dateutil - Andy


2
我相信你可以使用datetime.strptime来完成这个任务。
从文档中可以看到:
datetime.strptime(date_string, format)
返回一个datetime对象,该对象对应于按照format解析的date_string。这相当于datetime(*(time.strptime(date_string, format)[0:6]))。如果无法通过time.strptime()解析date_string和format,或者它返回不是时间元组的值,则会引发ValueError异常。

2

根据字符串的来源,您可以使用datetime.strptime进行解析。唯一的问题是strptime依赖于某些平台特定的东西,因此如果该字符串需要来自任意其他系统,并且所有天数和月份的定义不完全相同(例如Jun或June),则可能会遇到问题。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接