gpt4 book ai didi

python - 自定义 dateutil.parser 世纪推理逻辑

转载 作者:太空狗 更新时间:2023-10-30 01:00:05 24 4
gpt4 key购买 nike

我正在处理具有 2 位数年份的旧文本文件,其中 dateutil.parser 中的默认世纪逻辑似乎无法正常工作。例如,对珍珠港的攻击不是针对 dparser.parse("12/7/41")(返回 2041-12-7)。

回滚到 1900 年代的内置世纪“阈值”似乎发生在 66:

import dateutil.parser as dparser
print(dparser.parse("12/31/65")) # goes forward to 2065-12-31 00:00:00
print(dparser.parse("1/1/66")) # goes back to 1966-01-01 00:00:00

出于我的目的,我想将此“阈值”设置为 17,以便:

  • "12/31/16" 解析为 2016-12-31 (yyyy-mm-dd)
  • "1/1/17" 解析为 1917-01-01

但我想继续使用这个模块,因为它的模糊匹配似乎运行良好。

documentation没有确定执行此操作的参数...是否有我忽略的参数?

最佳答案

这没有特别详细的记录,但您实际上可以使用 dateutil.parser 覆盖它。第二个参数是一个 parserinfo 对象,您要关注的方法是 convertyeardefault implementation是什么导致了你的问题。您可以看到它基于当前年份(加上或减去五十年)对世纪的解释。这就是为什么您在 1966 年看到过渡。明年将是 1967 年。:)

由于您是个人使用它并且可能有非常具体的需求,因此您不必过于通用。如果它适合你,你可以做这么简单的事情:

from dateutil.parser import parse, parserinfo

class MyParserInfo(parserinfo):
def convertyear(self, year, *args, **kwargs):
if year < 100:
year += 1900
return year

parse('1/21/47', MyParserInfo())
# datetime.datetime(1947, 1, 21, 0, 0)

关于python - 自定义 dateutil.parser 世纪推理逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38577076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com