Fromtimestamp Python возвращает противоречивые результаты на разных машинах - PullRequest
8 голосов
/ 05 июля 2011

У меня есть два компьютера, для первого:

>>> 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 голосов
/ 06 июля 2011

Вот выдержка из файла "asia", который использует tzdata. В 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, поэтому знает только текущее смещение

...