gpt4 book ai didi

python - 解析日期时 %y 指令到底是如何解释的?

转载 作者:行者123 更新时间:2023-11-28 21:37:15 25 4
gpt4 key购买 nike

阅读时this question关于解析 %m/%d/%y 形式的日期,我意识到我不知道 %y 指令实际上是如何工作的。

docs陈述以下内容:

Year without century as a zero-padded decimal number.

但是它使用哪个世纪?如果我使用 %y 解析年份 01,结果是 1901 还是 2001?如果我在 100 年后重新运行相同的代码,结果会是 2101 吗?


作为实验,我编写了一些代码来解析从 0 到 99 的所有数字并显示结果:

for year in range(100):
date = '6/1/{:>02}'.format(year)
dt = datetime.strptime(date, "%m/%d/%y")
print(year, dt.date())

结果令人惊讶:

0 2000-06-01
1 2001-06-01
2 2002-06-01
...
67 2067-06-01
68 2068-06-01
69 1969-06-01 # <- wut
70 1970-06-01
71 1971-06-01
...
98 1998-06-01
99 1999-06-01

为什么突然从2068年跳到1969年?此行为是否记录在任何地方? %y 的正式规范是什么?

最佳答案

来自time文档,重点是我的:

Year 2000 (Y2K) issues: Python depends on the platform’s C library, which generally doesn’t have year 2000 issues, since all dates and times are represented internally as seconds since the epoch. Function strptime() can parse 2-digit years when given %y format code. When 2-digit years are parsed, they are converted according to the POSIX and ISO C standards: values 69–99 are mapped to 1969–1999, and values 0–68 are mapped to 2000–2068.

关于python - 解析日期时 %y 指令到底是如何解释的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49950892/

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