Wie konvertiere ich einen String in ein Datumsobjekt in Python?
Der String wäre: "24052010"
(entsprechend dem Format: "%d%m%Y"
)
Ich möchte kein datetime.datetime Objekt, sondern ein datetime.date Objekt.
Wie konvertiere ich einen String in ein Datumsobjekt in Python?
Der String wäre: "24052010"
(entsprechend dem Format: "%d%m%Y"
)
Ich möchte kein datetime.datetime Objekt, sondern ein datetime.date Objekt.
Ich versuche einen ähnlichen Prozess, außer dass mein Eingabestring kein Jahr enthält, also sieht es aus wie '2405'. Standardmäßig wird das Jahr als 1900
genommen. Das Problem tritt auf, wenn ich ein Februar-Datum wie '2902' parsen möchte. Ich erhalte diesen Fehler ValueError: day is out of range for month
. Ich bin mir nicht sicher, wie ich das Standardjahr beim Parsen setzen kann.
Direkt zugehörige Frage:
Was passiert, wenn Sie Folgendes haben:
datetime.datetime.strptime("2015-02-24T13:00:00-08:00", "%Y-%B-%dT%H:%M:%S-%H:%M").date()
und Sie erhalten:
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python2.7/_strptime.py", line 308, in _strptime
format_regex = _TimeRE_cache.compile(format)
File "/usr/local/lib/python2.7/_strptime.py", line 265, in compile
return re_compile(self.pattern(format), IGNORECASE)
File "/usr/local/lib/python2.7/re.py", line 194, in compile
return _compile(pattern, flags)
File "/usr/local/lib/python2.7/re.py", line 251, in _compile
raise error, v # invalid expression
sre_constants.error: redefinition of group name 'H' as group 7; was group 4
und Sie haben versucht:
<-24T13:00:00-08:00", "%Y-%B-%dT%HH:%MM:%SS-%HH:%MM").date()
aber Sie bekommen immer noch die oben stehende Fehlermeldung.
Antwort:
>>> from dateutil.parser import parse
>>> from datetime import datetime
>>> parse("2015-02-24T13:00:00-08:00")
datetime.datetime(2015, 2, 24, 13, 0, tzinfo=tzoffset(None, -28800))
Verwenden Sie das re (Regular Expression) Modul, um Ihre Daten von "2015-07-20 09:46:55+00:00" in "2015-07-20T09:46:55-00:00" zu ändern. Verwenden Sie dann dateutil.parse, um ein Datumsobjekt zu erhalten.
Vielen Dank, das eigentliche Problem war ein Wörterbuch-Objekt und ich habe die Lösung einfach mit dict.get gefunden.
Wenn Sie faul sind und sich nicht mit Zeichenfolgenliterale herumschlagen möchten, können Sie einfach das parser
Modul verwenden.
from dateutil import parser
dt = parser.parse("Jun 1 2005 1:33PM")
print(dt.year, dt.month, dt.day,dt.hour, dt.minute, dt.second)
>2005 6 1 13 33 0
Nur eine kleine Anmerkung, da wir versuchen, beliebige
Zeichenfolgen darzustellen, ist es 10x langsamer als strptime
Sie haben einen Datumsstring wie diesen: "24052010" und möchten ein Datumsobjekt dafür erstellen,
from datetime import datetime
cus_date = datetime.strptime("24052010", "%d%m%Y").date()
dieses cus_date wird Ihnen ein Datumsobjekt geben.
Sie können den Datumsstring von Ihrem Datumsobjekt mit diesem Code abrufen,
cus_date.strftime("%d%m%Y")
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.