如何将RFC 2822日期/时间解析为Python日期时间?

2024-06-06 13:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个RFC 2822指定的表单日期——比如Fri, 15 May 2009 17:58:28 +0000,作为字符串。在Python 2.5中,有没有一种快速和/或标准的方法将其作为datetime对象来获取?我试图生成一个strtime格式字符串,但是+0000时区说明符混淆了解析器。


Tags: 对象方法字符串解析器表单标准datetimerfc
3条回答

我想详细说明一下以前的答案。email.utils.parsedateemail.utils.parsedate_tz都返回元组,因为OP需要一个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])

注意d1d2都是原始的datetime对象,没有存储时区信息。如果需要aware datetime对象,请检查tzinfodatetime()参数。

或者可以使用dateutil模块

from email.utils import parsedate
print parsedate('Fri, 15 May 2009 17:58:28 +0000')

Documentation

问题是parsedate将忽略偏移量。

请改为:

from email.utils import parsedate_tz
print parsedate_tz('Fri, 15 May 2009 17:58:28 +0700')

相关问题 更多 >