La bibliothèque Pythondateutil
est conçue pour cela (et plus encore). Il le convertira automatiquement en datetime
objet pour vous et lèvera un ValueError
s'il ne le peut pas.
Par exemple:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
Cela déclenche un ValueError
si la date n'est pas formatée correctement:
>>> 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
est également extrêmement utile si vous commencez à avoir besoin d'analyser d'autres formats à l'avenir, car il peut gérer intelligemment les formats les plus connus et vous permet de modifier vos spécifications: des dateutil
exemples d'analyse .
Il gère également les fuseaux horaires si vous en avez besoin.
Mise à jour basée sur les commentaires : parse
accepte également l'argument mot-clé dayfirst
qui contrôle si le jour ou le mois doit venir en premier si une date est ambiguë. La valeur par défaut est False. Par exemple
>>> 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