Я знаю, как сделать это наоборот... это будет:
>>> dt.rfc822()
'Sun, 09 Mar 1997 13:45:00 -0500'
Я знаю, как сделать это наоборот... это будет:
>>> dt.rfc822()
'Sun, 09 Mar 1997 13:45:00 -0500'
In [1]: import rfc822 # This only works for python 2 series
In [2]: rfc822.parsedate_tz('Sun, 09 Mar 1997 13:45:00 -0500')
Out[2]: (1997, 3, 9, 13, 45, 0, 0, 1, 0, -18000)
в python3 parsedate_tz переместился в email.utils
>>> import email.utils # this works on Python2.5 and up
>>> email.utils.parsedate_tz('Sun, 09 Mar 1997 13:45:00 -0500')
(1997, 3, 9, 13, 45, 0, 0, 1, -1, -18000)
datetime
, а tuple
. Полный код datetime.datetime.fromtimestamp( email.utils.mktime_tz(email.utils.parsedate_tz( rfcdate )), pytz.utc )
. Ссылка: parand.com/say/index.php/2008/02/11/
- person AppleGrew; 11.08.2012
datetime.datetime.fromtimestamp(rfc822.mktime_tz(rfc822.parsedate_tz(rfc822String)))
- person theta; 10.07.2013
rfc822
предшествовал RFC2822. Оказывается, не лучшая идея называть модуль в честь RFC :) Это было исправлено в Python3. Текущий на самом деле RFC5322
- person John La Rooy; 08.11.2013
rfc822
устарел уже в Python 2.3; документация указывает на email
вместо пакета, который был представлен в Python 2.2.
- person tripleee; 09.10.2014
utcfromtimestamp
для дат в UTC: datetime.datetime.utcfromtimestamp(email.utils.mktime_tz(email.utils.parsedate_tz(rfcdate)))
- person tripleee; 09.10.2014
Начиная с Python 3.3 существует email.utils.parsedate_to_datetime(дата)
>>> from email.utils import parsedate_to_datetime
>>> datestr = 'Sun, 09 Mar 1997 13:45:00 -0500'
>>> parsedate_to_datetime(datestr)
datetime.datetime(1997, 3, 9, 13, 45, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))
Если убрать часовой пояс, то сделать это можно так:
datetime.datetime.strptime('Sun, 09 Mar 1997 13:45:00', '%a, %d %b %Y %H:%M:%S')