【问题标题】:Python's fromtimestamp returns inconsistent results on different machinesPython 的 fromtimestamp 在不同的机器上返回不一致的结果
【发布时间】:2011-09-28 13:16:23
【问题描述】:

我有两台电脑,第一台:

>>> 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”上有何不同?

【问题讨论】:

  • 您应该指定两台计算机在操作系统方面运行的内容,因为这很可能是它们如何增加内部计数器(例如闰秒、时区)方面的某种差异。
  • 第一个是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
  • windows 是时区天真,它没有时区规则何时更改的历史记录。我不知道为什么他们从来没有改善这种情况,这很荒谬
  • 哇,这意味着我错了。哦,好吧。
  • 确实,这与时区有关 - 在加利福尼亚州圣克鲁斯,datetime.datetime.fromtimestamp(0) == datetime.datetime(1969, 12, 31, 16, 0)

标签: python datetime timestamp


【解决方案1】:

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

... # 区域名称 GMTOFF 规则格式 [UNTIL] Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1 6:55:25 - SMT 1905 年 6 月 1 日 # 新加坡 M.T. 7:00 - MALT 1933 Jan 1 # 马来亚时间 7:00 0:20 MALST 1936 年 1 月 1 日 7:20 - 麦芽 1941 年 9 月 1 日 7:30 - 麦芽酒 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,所以只知道当前的偏移量

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 2021-10-07
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    相关资源
    最近更新 更多