Seite 1 von 1
Datumskonvertierung: String im Ctime Format => Datumsobje
Verfasst: Mittwoch 4. November 2009, 18:46
von SteeWeeDee
Wie komme ich von einem String im ctime-Format zu einem Datumsobjekt mit denselben Angaben. Kann das mitgelieferte datetime Modul das bewerkstelligen?
Bsp.:
Der String 'Mon Dec 30 21:27:03 2002' soll in ein Datumsobjekt mit dem Format "2002-30-12" konvertiert werden. Zeitangabe ist nicht erforderlich.
Verfasst: Mittwoch 4. November 2009, 18:52
von ms4py
Verfasst: Mittwoch 4. November 2009, 21:21
von SteeWeeDee
Das Beispiel >>> time.strptime("30 Nov 00", "%d %b %y") aus dem Link
http://docs.python.org/library/time.html#time.strptime habe ich bei mir ausprobiert und es funktioniert.
Jedoch stellt sich die Frage ob es auch funktioniert wenn man den date_format String in eine Variable gibt?
Code: Alles auswählen
getdatestring = "01 Mar 09"
time.strptime(getdatestring, "%d %b %y")
erhalte ich:
Code: Alles auswählen
ValueError: time data did not match format: data=01 Mar 09 fmt=%d %b %y
Verfasst: Mittwoch 4. November 2009, 21:23
von Hyperion
Also bei mir klappt's:
Code: Alles auswählen
In [1]: import time
In [2]: getdatestring = "01 Mar 09"
In [3]: time.strptime(getdatestring, "%d %b %y")
Out[3]: time.struct_time(tm_year=2009, tm_mon=3, tm_mday=1, tm_hour=0, tm_min=0,
tm_sec=0, tm_wday=6, tm_yday=60, tm_isdst=-1)
Verfasst: Mittwoch 4. November 2009, 22:26
von SteeWeeDee
So hab herausgefunden warum.
Die Daten(Mehrzahl von Datum) liegen in englischer Sprache vor.
Deswegen kommt 01 Mar 09, weill es ja für 1 March 2009 steht.
Hier kommt ein Fehler.
Versuche ich es mit der deutschen Bezeichnung, also mit März:
getdatestring = "01 Mär 09" funktioniert es

Genauso muss es oKt statt oCt für Oktober sein... Aber wenn ich 01 Jän 2009 nehme erscheint wieder der Fehler.
Also wie denn nun? Scheint ein Gemisch aus englischen und deutschen Bezeichnungen zu sein im time Modul oder was ist da los?
Verfasst: Mittwoch 4. November 2009, 22:57
von Leonidas
SteeWeeDee hat geschrieben:Aber wenn ich 01 Jän 2009 nehme erscheint wieder der Fehler.
Vielleicht solltest du bedenken, dass Jänner in Deutschland als Januar bekannt ist und somit ein anderes Kürzel hat..
Verfasst: Mittwoch 4. November 2009, 23:00
von ms4py
Leonidas hat geschrieben:SteeWeeDee hat geschrieben:Aber wenn ich 01 Jän 2009 nehme erscheint wieder der Fehler.
Vielleicht solltest du bedenken, dass Jänner in Deutschland als Januar bekannt ist und somit ein anderes Kürzel hat..
Ahaa. Ich hab mich schon gewundert, wie er auf das ``Jän`` kommt^^
Komisch, dass bei dir deutsch für die Time-Formatierung verwendet wird. Bei mir ist das englisch.
Verfasst: Mittwoch 4. November 2009, 23:18
von Leonidas
ice2k3 hat geschrieben:Komisch, dass bei dir deutsch für die Time-Formatierung verwendet wird. Bei mir ist das englisch.
Ich nehme an, dass da irgendwie Locales mit drin hängen.
Verfasst: Mittwoch 4. November 2009, 23:47
von SteeWeeDee
Gibt es noch andere Möglichkeiten? Habe mir mal mxDatetime angesehen. Hat jemand Erfahrung damit und weiß ob es dort auch eine Art von strptime gibt?
Edit: mx.datetime runtergeladen - installiert - importiert und dort gibt es strptime() ebenfalls; auch mit dem gleichem Syntax. Und funktioniert!
Danke für den strptime() Anstoß!