Python Dateutil解析:最小组件数

时间:2019-06-17 16:10:34

标签: python python-dateutil

python dateutils包允许在不指定格式的情况下解析日期(时间)。即使输入似乎不是一个日期,它也会尝试始终返回一个日期(例如12)。确保输入中至少包含日,月和年组件的有效方法是什么?

from dateutil import parser

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

返回 2019-06-12 00:00:00

1 个答案:

答案 0 :(得分:2)

您可以通过在可能的日期分隔符(例如.-:)上分割输入字符串来实现此目的。因此,您可以通过这种方式输入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个“件”。第二个没有。

这将取决于re.split中的内容,因此必须躲避,必须确保所有正确的定界符都在其中。

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