跳转到主要内容
基础知识

夏令时 - 时钟调整如何影响全球协调

什么是夏令时?

夏令时 (DST) 是在较温暖的月份将时钟拨快一小时的做法,以使傍晚拥有更多日光。春季时钟“拨快”一小时,秋季则“拨回”至标准时间。这一概念最早由 George Vernon Hudson 于 1895 年正式提出,并在第一次世界大战期间作为节能措施被广泛采用。

如今,大约 70 个国家实行某种形式的夏令时,但主要集中在北美和欧洲。非洲、亚洲和南美洲的大部分地区不调整时钟。赤道附近的国家全年日照时长变化很小,因此无需实行夏令时。日本、中国和印度是全年使用固定标准时间的主要经济体的典型代表。

转换何时发生?

美国和加拿大在 3 月的第二个星期日当地时间凌晨 2:00 开始夏令时,并在 11 月的第一个星期日结束。欧盟在 3 月的最后一个星期日和 10 月的最后一个星期日进行转换,变更在 UTC 凌晨 1:00 同时在所有成员国生效。这意味着每年有几周时间,北美和欧洲之间的时差与通常的偏移量相差一小时。

南半球实行夏令时的国家则按相反的时间表执行。澳大利亚在 10 月初开始夏令时,4 月初结束。新西兰在 9 月下旬开始,4 月初结束。由于一个城市处于夏令时而另一个处于标准时间,悉尼和伦敦之间的时差与其隆冬偏移量相比会波动两个小时。

确切的转换规则会随时间变化。美国根据 2005 年《能源政策法案》于 2007 年将夏令时延长了数周。任何处理时间转换的软件都必须使用最新版本的 IANA 时区数据库,以反映每个辖区的当前规则。

对国际日程的影响

夏令时转换是错过国际会议的主要原因。东京和伦敦之间数月来运行完好的每周定期通话,会在英国切换到英国夏令时后突然差一个小时。会议组织者可能要等到有人早到或晚到一个小时才意识到变化已经发生。

最安全的做法是使用固定的 UTC 时间而非本地时间来安排定期国际会议。如果会议设定为每周二 09:00 UTC,无论夏令时如何变化它始终是 09:00 UTC。在实行夏令时的地区,参与者会在当地日历中看到会议时间移动了一个小时,但实际会议时间保持一致。支持时区感知调度的日历应用程序在使用 UTC 锚点创建事件时会自动处理此问题。

废除夏令时的运动

越来越多的证据表明,每年两次的时钟调整会造成可衡量的危害。研究记录了春季转换后数天内心脏病发作、交通事故和工伤的增加。睡眠研究人员指出,突然的一小时偏移会扰乱昼夜节律,对某些人的影响可持续长达两周。

多个辖区已着手废除夏令时。欧盟于 2019 年投票决定结束强制时钟调整,但实施被推迟。在美国,《阳光保护法案》于 2022 年在参议院通过,提议实行永久夏令时 (全年保持夏令时),但未在众议院推进。亚利桑那州和夏威夷州已经不实行夏令时。随着越来越多的地区考虑废除,在过渡期间规则的拼凑可能会变得更加复杂。

对软件开发人员的考量

夏令时会在处理时间的软件中产生微妙的 bug。一天并不总是 24 小时:春季拨快那天只有 23 小时,秋季拨回那天有 25 小时。假设一天正好是 86,400 秒的代码每年会产生两次错误结果。同样,春季拨快当天本地时间凌晨 2:30 不存在,而秋季拨回当天本地时间凌晨 1:30 会出现两次。

对开发人员的标准建议是以 UTC 存储所有时间戳,仅在展示层转换为本地时间。显示未来事件时,应存储预期的本地时间以及 IANA 时区标识符 (而不仅仅是 UTC 偏移量),这样如果夏令时规则在事件发生前发生变化,系统可以重新计算正确的 UTC 等效值。Luxon、date-fns-tz 和 Java 的 java.time 包在使用最新时区数据时能正确处理这些边缘情况。

XB!LINE

这篇文章对您有帮助吗?

相关文章