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

时间:2011-07-05 06:30:42

标签: 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)

第二个:

>>> 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'上有所不同?

1 个答案:

答案 0 :(得分: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,因此只知道当前的偏移量