Не удается разобрать дату 1904 года в формате ARPA (дата электронной почты) - PullRequest
1 голос
/ 16 апреля 2010

Я обрабатываю почтовый ящик IMAP и сталкиваюсь с проблемами при разборе дат с помощью пакета mxDateTime. В частности, ранние даты, такие как «Пт, 1 января 1904 г. 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 ]

2 голосов
/ 16 апреля 2010

Возможно ли, что объект mxDateTime обрабатывает только даты и время, приходящиеся на эпоху Unix ?

0 голосов
/ 18 апреля 2010

Разобрался с помощью ребят из eGenix. Это проблема эпохи, но вы можете обойти ее, вручную извлекая смещение часового пояса и затем повторно применяя явным образом:

>>> 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'
>>>

Спасибо всем!

...