La biblioteca Pythondateutil está diseñada para esto (y más). Automáticamente convertirá esto en un datetimeobjeto para usted y elevará un ValueErrorsi no puede.
Como ejemplo:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
Esto aumenta un ValueErrorsi la fecha no está formateada correctamente:
>>> 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
dateutilTambién es extremadamente útil si comienza a necesitar analizar otros formatos en el futuro, ya que puede manejar los formatos más conocidos de manera inteligente y le permite modificar su especificación: dateutilanálisis de ejemplos .
También maneja zonas horarias si lo necesita.
Actualización basada en comentarios : parsetambién acepta el argumento de la palabra clave dayfirstque controla si se espera que el día o el mes sean los primeros si una fecha es ambigua. Esto predeterminado es False. P.ej
>>> 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