如何将“Thu Jun 5 10:59:10 CDT 2014”转换为Python datetime对象?

1 投票
2 回答
2092 浏览
提问于 2025-04-18 08:45

如何把“Thu Jun 5 10:59:10 CDT 2014”转换成Python的日期时间对象?

我好像遇到问题了,因为里面有CDT这个东西。用%Z来处理它时总是出错 :(

2 个回答

0

dateutil 可以轻松解析大多数日期格式。

$ easy_install dateutil

>>> from dateutil import parser
>>> parser.parse("Thu Jun 5 10:59:10 CDT 2014")
datetime.datetime(2014, 6, 5, 10, 59, 10)

(我觉得它对时区的处理可能不太准确……不过它确实能解析出来……)

3

在这里,你不能用普通的方法来创建datetime对象。正如文档中提到的strptime只能处理(空), UTC, EST, CST这些情况:

>>> datetime.datetime.strptime("Thu Jun 05 10:59:10 UTC 2014", "%a %b %d %H:%M:%S %Z %Y")
datetime.datetime(2014, 6, 5, 10, 59, 10)
>>> datetime.datetime.strptime("Thu Jun 05 10:59:10 CDT 2014", "%a %b %d %H:%M:%S %Z %Y")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'Thu Jun 05 10:59:10 CDT 2014' does not match format '%a %b %d %H:%M:%S %Z %Y'

你需要看看python-dateutil,它可以把对象解析成一个naive的日期时间对象(也就是说,它不考虑时区...):

>>> from dateutil import parser
>>> parser.parse("Thu Jun 5 10:59:10 CDT 2014")
datetime.datetime(2014, 6, 5, 10, 59, 10)

撰写回答