Python的fromtimestamp在不同机器上返回不一致结果
我有两台电脑,第一台的代码是:
>>> 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)
为什么它们在'0'这个结果上不一样,而在'1309846824'这个结果上却是一样的呢?
1 个回答
2
这里是tzdata使用的“asia”文件中的一部分。在debian或ubuntu系统上,你可以通过运行命令 apt-get source tzdata
来获取这个文件。
... # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1 6:55:25 - SMT 1905 Jun 1 # Singapore M.T. 7:00 - MALT 1933 Jan 1 # Malaya Time 7:00 0:20 MALST 1936 Jan 1 7:20 - MALT 1941 Sep 1 7:30 - MALT 1942 Feb 16 9:00 - JST 1945 Sep 12 7:30 - MALT 1982 Jan 1 8:00 - MYT # Malaysia Time ...
这段内容描述了吉隆坡的时区自1901年以来是如何变化的。所以在1970年时,它是GMT+7.5,现在变成了GMT+8。
Windows系统并不使用任何形式的tzdata,所以它只知道当前的时区偏移。