>>> from dateutil import parser
>>> parser.parse('May 10,2019')
datetime.datetime(2020, 5, 10, 0, 0)
>>> parser.parse('May 10, 2019')
datetime.datetime(2019, 5, 10, 0, 0)
请注意逗号后是否有空格。
当逗号后没有空格时,似乎是在解析两位数的年份,如果逗号后没有空格,则是在解析四位数的年份。
这是预期的吗?
我拥有的版本:
$ pip show python-dateutil 名称:python-dateutil 版本:2.8.0
$ python3 Python 3.6.9(默认值,2020年4月18日,01:56:04)
答案 0 :(得分:0)
这可能不会有太大帮助,但至少应提供一些额外的信息。
它不是在一种情况下解析两位数字的年份,而在另一种情况下解析四位数的年份,实际上在没有空格的情况下默认为当前年份出于某种原因解析年份。
>>> from dateutil import parser
>>> parser.parse("August 06, 1881")
datetime.datetime(1881, 8, 6, 0, 0)
>>> parser.parse("August 06,1881")
datetime.datetime(2020, 8, 6, 0, 0)
此问题已在Github上公开 https://github.com/dateutil/dateutil/issues/939,并且似乎与以下事实有关:逗号可以在时间内()使用分隔符(例如23,5秒)。它显然也可以正常工作:https://github.com/dateutil/dateutil/issues/1075 因此,有希望进行修复,但这将涉及对代码的研究。
同时在字符串上应用.replace(",", ", ")
的创可贴修复可能会起作用,但这当然不是最容易阅读的事情。
这可能也很有用,但是Github问题可能是最好的: https://dateutil.readthedocs.io/en/stable/parser.html#dateutil.parser.parserinfo.JUMP