【问题标题】:Daylight savings Linux errors 1970-1980夏令时 Linux 错误 1970-1980
【发布时间】:2017-08-28 10:51:51
【问题描述】:

在我的 Ubuntu 机器和 Windows 机器上运行以下 python 脚本时,我在 1970 年得到一小时的时差。

$ python3 -c "
> import time
> import datetime
> print(time.strftime('%x %X%z %Z'))
> print(datetime.datetime.fromtimestamp((87*24+2)*60*60).isoformat())"

Ubuntu 16.04 / Python 3.5.2 说:

04/03/17 15:37:07+0200 CEST
1970-03-29T03:00:00

Windows 10 / Python 3.5.1 说:

04/03/17 15:37:06+0200 Västeuropa, sommartid
1970-03-29T04:00:00

(Windows下的瑞典文是CEST的意思。)所以时钟是正确的,我认为时区和DST也是。我认为 Windows 得到的结果是正确的,至少当时应该发生 DST。在 Ubuntu 上,DST 直到十年后的 1980 年 4 月 6 日才出现(比 Windows 的 1980 年 3 月 30 日的 DST 晚一周;我也认为这是正确的),但此后一切似乎都很花哨。

这是软件错误吗?在 Python 中? Ubuntu?还是我需要以某种方式进行进一步的设置?我想这是一个日历怪癖没有被 Python/Windows 正确特殊处理的可能性很小?

【问题讨论】:

  • 转换时间是否正好在 DST 边界上?您是否有指向您所在时区的 DST 规则参考的链接?
  • 实际的 Ubuntu 分别是什么? W10 语言环境时区设置?
  • @JohnZwinck:没有 15:37:07 永远不会在任何 DST 边界上——那将是疯狂的。如果您愿意,可以在wikipedia 中查看瑞典。我不知道“W10 语言环境”是什么意思?
  • (人们可能会喜欢关于维护 TZ 感知日期时间应用程序的观点 >>> youtu.be/-5wpm-gesOY
  • @user3666197:哇哇哇! ;)

标签: python datetime ubuntu time epoch


【解决方案1】:

三年了。我花了几个小时挖掘才找到答案。原因是当时Linux下没有时区转换数据:

$ zdump -v Europe/Stockholm -c1900,1981
Europe/Stockholm  Sun May 14 21:59:59 1916 UT = Sun May 14 22:59:59 1916 CET isdst=0 gmtoff=3600
Europe/Stockholm  Sun May 14 22:00:00 1916 UT = Mon May 15 00:00:00 1916 CEST isdst=1 gmtoff=7200
Europe/Stockholm  Sat Sep 30 22:59:59 1916 UT = Sun Oct  1 00:59:59 1916 CEST isdst=1 gmtoff=7200
Europe/Stockholm  Sat Sep 30 23:00:00 1916 UT = Sun Oct  1 00:00:00 1916 CET isdst=0 gmtoff=3600
Europe/Stockholm  Sun Apr  6 00:59:59 1980 UT = Sun Apr  6 01:59:59 1980 CET isdst=0 gmtoff=3600
Europe/Stockholm  Sun Apr  6 01:00:00 1980 UT = Sun Apr  6 03:00:00 1980 CEST isdst=1 gmtoff=7200
Europe/Stockholm  Sun Sep 28 00:59:59 1980 UT = Sun Sep 28 02:59:59 1980 CEST isdst=1 gmtoff=7200
Europe/Stockholm  Sun Sep 28 01:00:00 1980 UT = Sun Sep 28 02:00:00 1980 CET isdst=0 gmtoff=3600

谁还需要 1917 年到 1979 年之间的岁月?计算是未来,而不是过去。 :D

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 2012-11-25
    • 2014-04-26
    • 2017-02-02
    • 2016-08-06
    • 2020-03-21
    • 2021-10-18
    • 2014-11-03
    相关资源
    最近更新 更多