A biblioteca Pythondateutil
foi projetada para isso (e mais). Ele automaticamente converterá isso em um datetime
objeto para você e aumentará umValueError
se não puder.
Como um exemplo:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
Isso gera a ValueError
se a data não estiver formatada corretamente:
>>> 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
também é extremamente útil se você começar a analisar outros formatos no futuro, pois ele pode lidar com os formatos mais conhecidos de maneira inteligente e permite modificar sua especificação: dateutil
exemplos de análise .
Ele também lida com fusos horários, se você precisar.
Atualização baseada em comentários : parse
também aceita o argumento de palavra-chave dayfirst
que controla se o dia ou o mês deve chegar primeiro se a data for ambígua. O padrão é Falso. Por exemplo
>>> 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