5

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

如果遇到不明确的日期,是否可以让解析器引发错误?我想它需要在第675 / 693 / 696行附近修改源代码( parser.py),但如果有一种方法不需要从字面上编辑源代码而只涉及重新定义某些函数,那就太好了也是。

当前行为:

>>> 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>
4

1 回答 1

9

最好的方法可能是编写一个方法来检查 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)
于 2013-08-03T04:02:20.330 回答