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

use*_*092 8 python datetime timestamp

我有两台电脑,第一台:

>>> datetime.datetime.fromtimestamp(0)
datetime.datetime(1970, 1, 1, 7, 30)
>>> datetime.datetime.fromtimestamp(1309846824)
datetime.datetime(2011, 7, 5, 14, 20, 24)
Run Code Online (Sandbox Code Playgroud)

对于第二个:

>>> datetime.datetime.fromtimestamp(0)
datetime.datetime(1970, 1, 1, 8, 0)
>>> datetime.datetime.fromtimestamp(1309846824)
datetime.datetime(2011, 7, 5, 14, 20, 24)
Run Code Online (Sandbox Code Playgroud)

在同意'1309846824'时他们怎么能在'0'上有所不同?

Joh*_*ooy 2

以下是 tzdata 使用的“asia”文件的摘录。在 debian/ubuntu 上,您可以通过运行命令获取此文件apt-get source tzdata

...
# 区域名称 GMTOFF 规则格式 [UNTIL]
亚洲区/吉隆坡_Lumpur 6:46:46 - LMT 1901 Jan 1
                        6:55:25 - SMT 1905 年 6 月 1 日 # 新加坡MT
                        7:00 - MALT 1933 年 1 月 1 日 # 马来亚时间
                        7:00 0:20 MALST 1936 年 1 月 1 日
                        7:20 - MALT 1941 年 9 月 1 日
                        7:30 - MALT 1942 年 2 月 16 日
                        9:00 - 日本标准时间 1945 年 9 月 12 日
                        7:30 - 麦芽酒 1982 年 1 月 1 日
                        8:00 - MYT # 马来西亚时间
...

这描述了自 1901 年以来吉隆坡的时区如何变化。所以在 1970 年我们看到它是 GMT+7.5 现在是 GMT+8

Windows 不使用任何形式的 tzdata,因此只知道当前偏移量