使dateutil解析器为模糊日期引发错误

时间:2013-08-03 03:50:43

标签: python python-dateutil

dateutil.parser用于解析给定字符串并将其转换为datetime.datetime对象。它通过允许dayfirst and yearfirst parameters给出某种格式的先例来处理模糊日期,例如“2-5-2013”​​。

如果遇到模棱两可的日期,是否可以让解析器引发错误?我想它需要修改parser.py / 675 / 693行周围的源代码(696),但如果有一种方法不需要字面编辑源代码代码,而只是涉及重新定义某些功能,这也很棒。

当前行为:

>>> from dateutil import parser
>>> parser.parse("02-03-2013")
datetime.datetime(2013, 2, 3, 0, 0)

期望的行为:

>>> from dateutil import parser
>>> parser.parse("02-03-2013")
Traceback (most recent call last):
..
ValueError: The date was ambiguous...<some text>

1 个答案:

答案 0 :(得分:5)

执行此操作的最佳方法可能是编写一种方法来检查3种不同模糊情况的相等性:

from dateutil import parser

def parse(string, agnostic=True, **kwargs):
    if agnostic or parser.parse(string, **kwargs) == parser.parse(string, yearfirst=True, **kwargs) == parser.parse(string, dayfirst=True, **kwargs):
        return parser.parse(string, **kwargs)
    else:
        raise ValueError("The date was ambiguous: %s" % string)