我已经实现了一个服务器端应用程序,它在创建和更新记录时记录时间戳。该应用程序假定服务器时钟没有启用夏令时,(a)因为我已经阅读了这是最佳实践,(b)因为我认为处理发生的歧义会很棘手(如果不是不可能的话),例如,10 月时钟倒退一个小时。
为安全起见,如果应用程序在启动时检测到 DST 已启用,则会记录错误并终止应用程序。即使应用服务器时钟启用了 DST,内部利益相关者也请求我使应用程序正常工作。
我觉得这是一件很鲁莽的事情,但我需要说服管理层。仅仅是它使实施变得更加棘手,还是存在根本缺陷,以至于这样的应用程序(记录时间戳)不可能在一年中的任何时候都 100% 正确运行?在启用 DST 的情况下不运行此类应用程序的最佳论据是什么?
我想出的最好的是:
启用夏令时时,每年有两次时间不连续。考虑以下场景,其中服务器在英国运行,时钟设置为本地时间并启用了夏令时:2009 年 10 月 25 日凌晨 2 点,时钟倒退一小时到凌晨 1 点。 1.30am 创建记录 该应用程序(必须以 UTC 存储时间戳)无法判断这是时钟倒退之前还是之后的凌晨 1.30,因此无法确定是否在调整 UTC 时包括额外的一小时。
这是真的?实际上是否可以确定(在 Java 网络应用程序中)在 10 月 25 日凌晨 1.30 发生的事件是在时钟调整之前还是之后?
避免 DST 的更好理由是什么?
更新
需要明确的是,应用程序必须将时间存储为 UTC。问题是为什么在尝试这样做时,在服务器机器上启用 DST 是个坏主意。