Die Python-dateutil Bibliothek ist dafür (und mehr) konzipiert. Es konvertiert dies automatisch in ein datetimeObjekt für Sie und löst ein aus, ValueErrorwenn dies nicht möglich ist.
Als Beispiel:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
Dies löst ein aus, ValueErrorwenn das Datum nicht richtig formatiert ist:
>>> parse("2003-09-251")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace(**repl)
ValueError: day is out of range for month
dateutilDies ist auch äußerst nützlich, wenn Sie in Zukunft andere Formate analysieren müssen, da es die meisten bekannten Formate intelligent verarbeiten kann und Sie Ihre Spezifikation ändern können: dateutilAnalysebeispiele .
Es behandelt auch Zeitzonen, wenn Sie das brauchen.
Aktualisierung basierend auf Kommentaren : parseAkzeptiert auch das Schlüsselwortargument, dayfirstdas steuert, ob der Tag oder der Monat an erster Stelle stehen soll, wenn ein Datum nicht eindeutig ist. Dies ist standardmäßig False. Z.B
>>> parse('11/12/2001')
>>> datetime.datetime(2001, 11, 12, 0, 0) # Nov 12
>>> parse('11/12/2001', dayfirst=True)
>>> datetime.datetime(2001, 12, 11, 0, 0) # Dec 11