【发布时间】:2014-03-21 06:40:31
【问题描述】:
我正在尝试获取一个代表 4 月 23 日 的 datetime 实例,但如果传递的参数是 '3.4',则始终获取 3 月 4 日,设置 dayfirst=False 是没用的:
In [115]: from dateutil import parser
In [116]: parser.parse('4-23', ) #√
Out[116]: datetime.datetime(2014, 4, 23, 0, 0)
In [117]: parser.parse('4/23', ) #√
Out[117]: datetime.datetime(2014, 4, 23, 0, 0)
In [118]: parser.parse('4.23', ) #×
Out[118]: datetime.datetime(2014, 3, 4, 0, 0)
In [120]: parser.parse('4.23', dayfirst=False) #×
Out[120]: datetime.datetime(2014, 3, 4, 0, 0)
是parser的bug吗?
【问题讨论】:
-
模糊选项有效吗?
parser.parse('4.23', fuzzy=True)? -
@Salixalba 它没有
-
我仍然得到相同的结果:dt=parser.parse("3/13/2019", dayfirst=True), dt.day=13
-
@ShaniShalgi 你怎么能有 13 个月的价值?解析器假定您犯了一个错误,您确实这样做了,传递了一个月的无效值,并尝试通过使 dayfirst 参数无效来纠正该错误。请参阅下面已编辑答案中的工作示例。
-
@Spade 当然我知道 13 是一个无效的月份,但这也是为什么我希望得到一个错误 dt=parser.parse("3/13/2019", dayfirst=True) ,与 dt=parser.parse("3/53/2019", dayfirst=True) 相同。提供更正是一回事,但当我特别要求 dayfirst 时自动更正又是另一回事。我有一个读取日期的 OCR 程序,如果它出错,读取 2019 年 3 月 13 日而不是 2019 年 3 月 8 日,我不想为我纠正这个问题。之后我必须编写一个精心设计的程序来撤消这个更正。
标签: python datetime python-dateutil