gpt4 book ai didi

python - 为什么 python 的 datetime.datetime.strptime ('201412' , '%Y%m%d' ) 不引发 ValueError?

转载 作者:太空狗 更新时间:2023-10-29 18:26:11 26 4
gpt4 key购买 nike

在我给出的格式中,日期 2014-01-02 将由“20140102”表示。这是使用标准 strptime 正确解析的:

>>> datetime.datetime.strptime("20140102", "%Y%m%d")
datetime.datetime(2014, 1, 2, 0, 0)

在这种格式中,“201412”不是有效日期。 docs假设“%m”指令是“以零填充的十进制数表示的月份”。它给出了示例“01、02、...、12”。 days 指令“%d”也应该用零填充。

基于此,我预计“201412”将是这种格式的无效输入,因此会引发 ValueError。相反,它被解释为 2014-01-02:

>>> datetime.datetime.strptime("201412", "%Y%m%d")
datetime.datetime(2014, 1, 2, 0, 0)

问题是:有没有一种方法可以指定“仅不严重填充零”?还是我在这种情况下误解了“零填充”一词?

请注意,问题不是关于如何解析这种格式的日期,而是关于理解 strptime 的行为。

最佳答案

根据相关issue在 Python 跟踪器上,示例如下(对这个问题进行了一些修改,但概念完全相同):

>>> datetime.datetime.strptime('20141110', '%Y%m%d').isoformat()
'2014-11-10T00:00:00'
>>> datetime.datetime.strptime('20141110', '%Y%m%d%H%M').isoformat()
'2014-01-01T01:00:00'

this comment 所述,上述行为不是错误其中声明它们符合 OpenGroup strptime standard它指定“允许但不需要前导零”。

我想解决方法是使用正则表达式或在传递到 strptime 之前检查字符串的长度是否为 8。

关于python - 为什么 python 的 datetime.datetime.strptime ('201412' , '%Y%m%d' ) 不引发 ValueError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523968/

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