无法以ARPA格式解析1904年的日期(电子邮件日期)

时间:2010-04-15 21:09:25

标签: python email datetime parsing

我正在处理IMAP邮箱,并且在使用mxDateTime包解析日期时遇到问题。特别是像“周一,1904年1月1日00:43:25 -0400”这样的早期日期会造成麻烦:

>>> import mx.DateTime
>>> import mx.DateTime.ARPA
>>> mx.DateTime.ARPA.ParseDateTimeUTC("Fri, 1 Jan 1904 00:43:25 -0400").gmtoffset()
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
Error: cannot convert value to a time value
>>> mx.DateTime.ARPA.ParseDateTimeUTC("Thu, 1 Jan 2009 00:43:25 -0400").gmtoffset()
<mx.DateTime.DateTimeDelta object for '-08:00:00.00' at 1497b60>
>>> 

请注意,2009年的日期几乎完全相同。我在mxDateTime本身找不到任何日期限制的描述。任何想法为什么会这样?

THX,

Ramon的

2 个答案:

答案 0 :(得分:2)

mxDateTime对象是否可能只处理the Unix Epoch之后的日期时间?

答案 1 :(得分:0)

在eGenix人员的帮助下计算出来。这是一个Epoch问题,但您可以通过手动提取时区偏移然后明确重新应用来解决它:

>>> s = "Wed, 1 Jan 1969 00:43:25 -0400"
>>> delta = ParseDateTime(s) - ParseDateTimeUTC(s)
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
 NameError: name 'ParseDateTime' is not defined
>>> delta = mx.DateTime.ARPA.ParseDateTime(s) - mx.DateTime.ARPA.ParseDateTimeUTC(s)
>>> mx.DateTime.ARPA.str(mx.DateTime.ARPA.ParseDateTime(s), delta)
'Wed, 01 Jan 1969 00:43:25 -0400'
>>>

谢谢大家!