5

dateutil.parser指定された文字列を解析してオブジェクトに変換するために使用されdatetime.datetimeます。「2013 年 2 月 5 日」のようなあいまいな日付は、パラメータが特定の形式に先行することを許可することで処理さdayfirstyearfirstます

あいまいな日付に遭遇した場合、パーサーにエラーを発生させることは可能ですか? 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 に答える