Python dateutil
библиотека предназначена для этого (и более). Он автоматически преобразует это в объект datetime
для вас и поднимет ValueError
, если он не сможет.
В качестве примера:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
Это поднимает ValueError
, если дата не отформатирован правильно:
>>> 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
также очень полезно, если вы начинаете необходимости разбирать другие форматы в будущем , так как он может обрабатывать наиболее известные форматы разумно и позволяет вам изменять вашу спецификацию: dateutil
parsing examples.
Он также обрабатывает часовые пояса, если вам это нужно.
Обновления на основе комментариев: parse
также принимает аргумент dayfirst
ключевого слова, которое контролирует день или месяц, ожидается ли прийти первым, если дата неоднозначна. По умолчанию это значение False. Например.
>>> 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
Это может быть более Pythonic (просить прощения, а не разрешения) не проверять на всех, и поймать любые результирующие исключения, которые происходят. – Thomas
Связано: [В python, как проверить, действительна ли дата?] (Http://stackoverflow.com/q/9987818/55075) – kenorb