La biblioteca Python dateutil
è stato progettato per questo (e molto altro). Lo convertirà automaticamente in un oggetto datetime
e aumenterà un ValueError
se non è possibile.
Per fare un esempio:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
Questo solleva una ValueError
se la data non è formattata correttamente:
>>> 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
dateutil
è anche estremamente utile se si inizia a dover analizzare altri formati in futuro , poiché è in grado di gestire i formati più noti in modo intelligente e consente di modificare le specifiche: dateutil
parsing examples.
Gestisce anche i fusi orari se necessario.
aggiornamento sulla base dei commenti: parse
accetta anche la parola argomento dayfirst
che controlla se il giorno o il mese si prevede di venire prima se una data è ambiguo. Questo valore è impostato su False. Per esempio.
>>> 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
Potrebbe essere più Pythonic (chiedere perdono, non è permesso) non controllare a tutti, e prendere le eventuali eccezioni risultanti che si verificano. – Thomas
Correlati: [In python, come verificare se una data è valida?] (Http://stackoverflow.com/q/9987818/55075) – kenorb