4 ntp
有人知道是否有可能在不中断时间线的情况下从夏季切换到冬季。我有一个使用时间戳记录事务的应用程序。问题是,我不能有重叠的时间戳。如果我只是将时钟从凌晨 3 点切换到凌晨 2 点,则会出现重叠。意味着我可以有两倍的时间 2:30 例如。
但是,如果时间在下午 2 点开始慢两倍,我会在下午 3 点获得正确的时间,不会中断,也不会中断时间线。
那么有人知道是否有支持此功能的协议吗?NTP 似乎没有这样做。而且没有机会改变应用程序,上次我们只是停止了一个小时,但必须有更好的东西。
不,没有办法做到这一点。当地时间只是重叠,对此您无能为力。您当然可以在 DST 更改期间使用某种滑动转换,但这会使事情进一步复杂化(例如转换期间的时间戳会很奇怪)。
最简单的解决方案(可能是唯一的解决方案)是使用 UTC 来记录时间戳。在显示时间时,您可以随时将时间转换为您喜欢的任何当地时间。
我同意 Kyle Brandt 的观点,即登录 UTC 是最好的。如果这是不可接受的(并且没有以“同一时间”记录相隔一小时的事件),则在日志中报告时区偏移量(以及或代替时区名称),以便你看:
2009-11-01 01:59:59 -07:00 ...event 1...
2009-11-01 01:00:00 -08:00 ...event 2...one second after event 1...
Run Code Online (Sandbox Code Playgroud)
这为需要的人提供了完整的信息;但对于那些不这样做的人来说,它很容易被忽略。上面隐含的时区是“US/Pacific”(或首选名称 America/Los_Angeles),是 2009 年的正确时区切换。
显示的日期格式是ISO 8601:2004标准符号的次要变体。有不同的“标准”符号:
2009-11-01T01:59:59-07:00
20091101T015959-0700
Run Code Online (Sandbox Code Playgroud)
后者是人类无法读取的(但紧凑且易于程序读取)。前者的优点是整个时间字符串是一个“单个词”,而不是我使用的符号中的 3 个词。