gpt4 book ai didi

python - 1984 年 3 月 16 日发生了什么?

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

我想弄清楚 1984 年 3 月 16 日有什么特别之处。在我使用的虚拟机上(没有什么特别之处),Python(以及 PyPy)在尝试使用 mktime 时崩溃是一个完全合理的时间结构。

$ pypy
Python 2.7.3 (f66246c46ca30b26a5c73e4cc95dd6235c966b8f, Jul 30 2013, 09:27:06)
[PyPy 2.0.2 with GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>> import time
>>>> time.mktime((1984,3,16,0,0,0,0,0,0))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: mktime argument out of range
>>>> time.mktime((1984,3,15,0,0,0,0,0,0))
448156800.0
>>>> time.mktime((1984,3,17,0,0,0,0,0,0))
448326000.0
>>>> time.mktime((1984,3,16,0,0,0,0,0,0))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: mktime argument out of range
>>>>

为什么以及可以采取什么措施来避免这个问题?

虽然此 VM 上每次都会出现此问题,但我无法让它在任何其他 VM 上出现。

最佳答案

啊哈!谜团解决了(因为 OP 终于弄清楚了“错误”的时区)。我发现了这个:

http://www.timeanddate.com/worldclock/timezone.html?n=60&syear=1980

1980    No time changes  
1981 No time changes
1982 No time changes
1983 No time changes
1984 Time zone change on Friday, March 16, 1984 at 1:00:00 AM
1985 Time zone change on Tuesday, December 31, 1985 at 11:00:00 PM
1986 No time changes
1987 No time changes
1988 No time changes
1989 No time changes

所以,我想“1984 年 3 月 16 日发生的事情”的答案是卡萨布兰卡在那天凌晨 1:00 更改了时间。 :)

从技术上讲,它从午夜立即跳到凌晨 1:00,因此从 00:00 开始到 01:00 之前的所有时间可能都会产生相同的错误。也就是说,我的猜测是 time.mktime((1984,3,16,1,0,0,0,0,0)) 和更大的会起作用,但是例如, time.mktime((1984,3,16,0,59,0,0,0,0)) 不会。

关于python - 1984 年 3 月 16 日发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18950963/

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