java – 为什么不在启用夏令时的情况下运行服务器端应用程序?
我已经实现了一个服务器端应用程序,它记录了创建和更新记录时的时间戳.该应用程序假设服务器时钟没有启用夏令时,(a)因为我读过这是最佳做法和(b)因为我认为处理发生的歧义会很棘手(如果不是不可能的话),例如当时钟在十月份回归一个小时.
为安全起见,如果应用程序在启动时检测到DST已启用,则会记录错误并终止应用程序.即使应用服务器时钟启用了DST,我也会被内部利益相关者请求使应用程序正常工作. 我觉得尝试这样做是个愚蠢的事情,但我需要说服管理层.只是因为它使实现变得更加棘手,或者它是否存在根本上的缺陷,以至于这样的应用程序(记录时间戳)在一年中的任何时候都无法正确运行100%?在没有启用DST的情况下运行这样的应用程序的最佳理由是什么? 我想出的最好的是:
这是真的?实际上是否可以确定(在Java Web应用程序中)10月25日凌晨1点30分发生的事件是在时钟调整之前还是之后? 避免夏令时的任何更好的理由? 更新 需要明确的是,应用程序必须将时间存储为UTC.问题是为什么在尝试这样做时,在服务器计算机上启用DST是一个坏主意. 解决方法
没有理由在服务器上禁止DST,因为时区(或者我应该说“应该”)只是格式化.系统时钟与时区无关.时间戳应该以明确的格式存储,或者像“epoch from epoch”一样存储,如System.currentTimeMillis()及其同类(与时区无关),或者作为指定UTC偏移量的文本(然后变得明确,如
ISO 8601) .
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |