python dateutils
包允许在不指定格式的情况下解析日期(时间)。即使输入似乎不是一个日期,它也会尝试始终返回一个日期(例如12
)。确保输入中至少包含日,月和年组件的有效方法是什么?
from dateutil import parser
dstr = '12'
dtime = parser.parse(dstr)
返回
2019-06-12 00:00:00
答案 0 :(得分:2)
您可以通过在可能的日期分隔符(例如.
,-
,:
)上分割输入字符串来实现此目的。因此,您可以通过这种方式输入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
中的内容,因此必须躲避,必须确保所有正确的定界符都在其中。
如果只需要典型日期分隔符,则可以删除分隔符中的:
。