Один из способов сделать это - разделить входную строку на вероятные разделители даты (например, .
, -
, :
). Таким образом, вы можете ввести 2016.5.19
или 2016-5-19
.
from dateutil import parser
import re
def date_parser(thestring):
pieces = re.split('\.|-|:', thestring)
if len(pieces) < 3:
raise Exception('Must have at least year, month and date passed')
return parser.parse(thestring)
print('---')
thedate = date_parser('2019-6-12')
print(thedate)
print('---')
thedate = date_parser('12')
print(thedate)
Будет выведено:
---
2019-06-12 00:00:00
---
Traceback (most recent call last):
File "bob.py", line 18, in <module>
thedate = date_parser('12')
File "bob.py", line 9, in date_parser
raise Exception('Must have at least year, month and date passed')
Exception: Must have at least year, month and date passed
Таким образом, первый проходит, это 3 "части" на дату. Второй нет.
Это будет хитро в зависимости от того, что в re.split
, нужно будет убедиться, что все правильные разделители там.
Вы можете удалить :
в разделителях, если хотите просто типичные разделители даты.