3

Pythonで非常に奇妙なバグが発生しています。

from dateutil import parser
string = "March 2008"
parser.parse(string)
 datetime.datetime(2008, 3, 30, 0, 0)
string = "February 2008"
parser.parse(string)

トレースバック (最新の呼び出しが最後):

ファイル ""、1 行目、ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/dateutil/parser.py"、697 行目、解析で DEFAULTPARSER.parse(timestr, **kwargs) ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/dateutil/parser.py"、310 行目、解析 ret = default.replace(**repl) ValueError : 日は月の範囲外です

パーサーを機能させるために文字列に 1 日を追加できることは理解していますが、dateutil が 2 月の日なしでは機能しないのに、隔月では機能する理由がわかりません。

4

2 に答える 2

1

問題は、解析された文字列に存在しないフィールドが現在の日付から取得されることです。

2014 年 7 月 30 日に実行したため、"March 2008" は 2008 年 3 月 30 日を返すことに注意してください。

同様に、「March」だけで 2014 年 3 月 30 日になります。

したがって、"February 2008" は 2008 年 2 月 30 日になりますが、これはもちろん無効です。

于 2014-07-30T19:15:06.140 に答える