Python的fromtimestamp在不同机器上返回的结果不一致

8

我有两台电脑,第一台:

>>> datetime.datetime.fromtimestamp(0)
datetime.datetime(1970, 1, 1, 7, 30)
>>> datetime.datetime.fromtimestamp(1309846824)
datetime.datetime(2011, 7, 5, 14, 20, 24)

对于第二个:
>>> datetime.datetime.fromtimestamp(0)
datetime.datetime(1970, 1, 1, 8, 0)
>>> datetime.datetime.fromtimestamp(1309846824)
datetime.datetime(2011, 7, 5, 14, 20, 24)

他们在同意 '1309846824' 的情况下,如何对 '0' 产生差异?

你应该指定这两台计算机运行的操作系统,因为很可能这是一些内部计数器增量方面的差异(例如闰秒、时区)。 - mac
第一个是Linux(Linux newubuntu 2.6.32-21-generic#32-Ubuntu SMP Fri Apr 16 08:09:38 UTC 2010 x86_64 GNU / Linux),第二个是Windows 7。 - user829092
3
Windows不考虑时区,没有记录时区规则的更改历史。我不知道为什么他们从未改善这种情况,这相当荒谬。 - John La Rooy
1
确实,这与时区有关 - 在加利福尼亚州圣克鲁斯,datetime.datetime.fromtimestamp(0) == datetime.datetime(1969, 12, 31, 16, 0)。 - synthesizerpatel
机器设置的时区/语言环境是什么? - Domingo Ignacio
显示剩余2条评论
1个回答

2
这是tzdata使用的“asia”文件的一部分。在Debian / Ubuntu上,您可以通过运行命令“apt-get source tzdata”来获取此文件。
这段代码描述了自1901年以来吉隆坡的时区如何变化。因此,在1970年,我们看到它是GMT + 7.5,现在是GMT + 8。
Windows不使用任何形式的tzdata,因此只知道当前偏移量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接