Seite 1 von 1

Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST)

Verfasst: Freitag 28. Mai 2010, 16:32
von rhersel
Wie parst man denn sowas:

Code: Alles auswählen

time.strptime('Fri, 28 May 2010 13:57:23 +0200 (CEST)', '%a, %d %B %Y %X und_hier_fehlt_noch_was')
Das ist der Date-String wie er in (fast) jedem Email Header steckt.

Re: Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST

Verfasst: Freitag 28. Mai 2010, 16:42
von b.esser-wisser
Du hast es ja schon bis time.strptime() geschafft - brauchst du jetzt Hilfe beim englisch lesen?

hth, Jörg
ps.: das Beispiel zu time.strftime() (da werden die Platzhalter aufgezählt) macht genau das Gegenstück zu dem was du machen willst...

Re: Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST

Verfasst: Freitag 28. Mai 2010, 16:59
von rads
Beispiel von der Seite:

Code: Alles auswählen

>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
'Thu, 28 Jun 2001 14:17:15 +0000'
sollte genau das gleiche Format sein

Re: Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST

Verfasst: Freitag 28. Mai 2010, 19:11
von rhersel
Ich bekomme das nicht hin:

Code: Alles auswählen

print time.strptime('Fri, 28 May 2010 13:57:23 +0200 (CEST)', '%a, %d %B %Y %H:%M:%S +0000')
ergibt den Fehler:

Code: Alles auswählen

ValueError: time data 'Fri, 28 May 2010 13:57:23 +0200 (CEST)' does not match format '%a, %d %B %Y %H:%M:%S +0000'

Re: Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST

Verfasst: Freitag 28. Mai 2010, 20:20
von problembär
So wie der String aussieht, kannst Du auch an " " splitten und dann das time- oder datetime-Objekt mit ["28", "May", "2010"] von Hand aufbauen.
Wo ist das Problem?

Re: Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST

Verfasst: Freitag 28. Mai 2010, 20:28
von b.esser-wisser
Um den ganzen String am Stück zu parsen, habe ich auch nichts gefunden, aber das kann man auch von Hand machen, ist nicht so schwierig:

Code: Alles auswählen

import datetime
problem_string = 'Fri, 28 May 2010 13:57:23 +0200 (CEST)'
date_string, offset, _ = problem_string.rsplit(None, 2)
parsed_date = datetime.datetime.strptime('%a, %d %B %Y %H:%M:%S', date_string)
final_data = parsed_date - datetime.timedelta(0, int(offset[:3])*3600 + int(offset[3:])*60)
Weiß jemand wie man "datetime.tzinfo()" benutzt? - ist vielleicht einfacher

hth, Jörg

Re: Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST

Verfasst: Freitag 28. Mai 2010, 21:07
von Trundle
Mit `email.utils.parsedate()` kann man es parsen.

Re: Zeitstring parsen: Fri, 28 May 2010 13:57:23 +0200 (CEST

Verfasst: Freitag 28. Mai 2010, 21:21
von rhersel
Ja, email.utils funktioniert perfekt.
Danke