Ich weiß, wie diese umgekehrt zu tun ... es wäre:Wie konvertiere ich RFC822 in ein Python-Datetime-Objekt?
>>> dt.rfc822()
'Sun, 09 Mar 1997 13:45:00 -0500'
Ich weiß, wie diese umgekehrt zu tun ... es wäre:Wie konvertiere ich RFC822 in ein Python-Datetime-Objekt?
>>> 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)
in python3 parsedate_tz hat
>>> 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)
Wenn Sie das abstreifen email.utils bewegt Zeitzone, können Sie es wie folgt tun:
datetime.datetime.strptime('Sun, 09 Mar 1997 13:45:00', '%a, %d %b %Y %H:%M:%S')
Dies funktioniert nicht bei den meisten Gebietsschema-Einstellungen. –
Dies scheint keine Zeitzonen zu haben –
Er fragte spezifisch, wie man es für rfc822 Datum/Zeit macht. Da rfc822 die Zeitzone enthält, lösen Sie die Antwort nicht. Schlimmer noch, es gibt tatsächlich eine andere Zeit zurück, abhängig von der Zeitzone, in der der Code ausgeführt wurde, und der Zeitzone, in der die Zeichenfolge generiert wurde (was in Webanwendungen sehr unterschiedlich sein kann). –
Ab python 3.3 gibt es email.utils.parsedate_to_datetime(date)
>>> 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)))
Ich dachte, RF822 wurde veraltet? – Udbhav
Danke, repariert es. Es gibt keine Verwarnungswarnung sogar in 2.6 :( –
Die obige Technik gibt 'datetime' nicht zurück, sondern ein' tuple'. Der vollständige Code ist 'datetime.datetime.fromtimestamp (email.utils.mktime_tz (email.utils.parsedate_tz ((http://parand.com/say/index.php/2008/02/11/parsing-and-normalizing-dates-with-timezones-in-python/ – AppleGrew