Python Dateutil 解析:最小组件数

Python Dateutil Parsing: Minimum number of components

python dateutils 包允许在不指定格式的情况下解析日期(时间)。它总是尝试 return 一个日期,即使输入看起来不是一个日期(例如 12)。 python确保输入中至少包含日、月和年的组成部分的方法是什么?

from dateutil import parser

dstr = '12'
dtime = parser.parse(dstr)

Returns 2019-06-12 00:00:00

一种方法是在可能的日期分隔符(例如,.-: 上拆分输入字符串。所以,这样你就可以输入 2016.5.192016-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 "pieces"。第二个没有。

根据 re.split 中的内容,这会变得不可靠,必须确保其中包含所有正确的分隔符。

如果您只需要 典型 日期分隔符,您可以删除分隔符中的 :