如何将RFC 2822日期/时间解析为Python datetime?
我有一个日期,格式是RFC 2822规定的,比如说 Fri, 15 May 2009 17:58:28 +0000
,这是一个字符串。请问在Python 2.5中,有没有快速或者标准的方法把它转换成 datetime
对象?我试着写了一个strptime的格式字符串,但那个 +0000 的时区标识让我搞不懂解析器该怎么处理。
6 个回答
12
from email.utils import parsedate
print parsedate('Fri, 15 May 2009 17:58:28 +0000')
文档。
16
我想进一步解释一下之前的回答。email.utils.parsedate
和 email.utils.parsedate_tz
这两个函数都会返回一个元组。因为提问者需要的是一个 datetime.datetime
对象,所以我这里加了一些例子来补充说明:
from email.utils import parsedate
from datetime import datetime
import time
t = parsedate('Sun, 14 Jul 2013 20:14:30 -0000')
d1 = datetime.fromtimestamp(time.mktime(t))
或者:
d2 = datetime.datetime(*t[:6])
注意,d1
和 d2
都是普通的日期时间对象,它们没有存储时区信息。如果你需要带有时区信息的日期时间对象,可以查看 tzinfo
和 datetime()
的参数。
另外,你也可以使用 dateutil 模块。
45
问题是,parsedate 会忽略时间偏移量。
你可以这样做:
from email.utils import parsedate_tz
print parsedate_tz('Fri, 15 May 2009 17:58:28 +0700')