Datumskonvertierung: String im Ctime Format => Datumsobje

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

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.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

http://docs.python.org/library/time.html#time.strptime

Edit: Falls du nur das Datum willst, ist eventuell die Methode von datetime.datetime noch geeigneter.
http://docs.python.org/library/datetime ... e.strptime
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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)
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

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?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

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ß!
Antworten