>>date-6ren">
gpt4 book ai didi

python - 使用 dateutil.parser 转换 DDMMYYYY

转载 作者:太空狗 更新时间:2023-10-29 21:20:38 25 4
gpt4 key购买 nike

我有以下字符串输入:24052017。当我尝试这样做时:

>>>dateutil.parser.parse("24052017")

它告诉我月份必须在 1..12 中

我什至尝试过:

>>>dateutil.parser.parse("24052017", firstday=True)

它给了我完全相同的结果。

似乎发生的是它不喜欢没有空格或分隔符的事实。它正确地读取了日期,但是当涉及到月份时,它读取的是 0520。至少我是这么怀疑的。

如何在不处理字符串的情况下使用 dateutil.parser 转换此特定输入?

最佳答案

dateutil 目前不支持这种格式。一般来说,如果您知道日期的格式并且它没有时区,您应该只使用 datetime.datetime.strptime 来解析您的日期,如 dateutil.parser.parse 有相当多的开销用于尝试弄清楚您的日期的格式,而且,关键的是,它可能会弄错格式。

有一个针对 2.6.0 分支的拉取请求正在讨论添加此格式,您可以找到它 here, ondateutil's github .反对这一点的主要论点是,如果您尝试解析一系列日期,它将把 12052017 解释为“2017 年 12 月 5 日”,而将 13052017 解释为“5 月” 13, 2017”。 (也就是说,您现在确实有同样的不一致,因为第一个日期将解析为 2017 年 12 月 5 日,但第二个日期将完全失败)。

如果您不知道字符串的格式,但您知道如果它是一个 8 位数字日期,您希望将其解释为 DDMMYYYY,目前最好的办法是将该异常硬编码到解析器中:

from dateutil.parser import parse as duparse
from datetime import datetime

def parse(dtstr, *args, **kwargs):
if len(dtstr) == 8 and dtstr.isnumeric():
return datetime.strptime(dtstr, '%d%m%Y')
else:
return duparse(dtstr, *args, **kwargs)

dateutil 提供更灵活和可扩展的解析器的计划进展缓慢,但目前还没有完成太多工作。

关于python - 使用 dateutil.parser 转换 DDMMYYYY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44330291/

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