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>

最佳答案

做到这一点的最佳方法可能是编写一种检查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)

关于python - 使dateutil解析器对模棱两可的日期引发错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18029074/

10-12 19:34