为什么 Java 支持秒精度的时区偏移量?
在维基百科上,时区偏移量被解释为小时和分钟与标准UTC时间的差异。但是,DateTimeFormatter支持区域偏移模式,该模式“输出小时和分钟以及可选的秒,并带有冒号,例如'+01:30:15'。XXXXX
像ISO这样的偏移量有效吗?如果不是,Java根据哪个标准定义这种偏移量?+01:30:15
在维基百科上,时区偏移量被解释为小时和分钟与标准UTC时间的差异。但是,DateTimeFormatter支持区域偏移模式,该模式“输出小时和分钟以及可选的秒,并带有冒号,例如'+01:30:15'。XXXXX
像ISO这样的偏移量有效吗?如果不是,Java根据哪个标准定义这种偏移量?+01:30:15
额外精确度的一个原因是,我们都熟悉的国家时区并不是故事的结局。
如果你看一下维基百科关于UTC的文章下的“另请参阅”部分,你会看到一系列时间标准,这些标准与UTC有第二(甚至小数秒)的偏移量。特别令人感兴趣的是UTC所基于的TAI(国际原子时间)。目前的差异是37秒,因为UTC包括闰秒,而TAI不包括。因此,要支持父标准,需要二级精度。
GPS 时间也与 UTC 偏移了数秒(相对于 TAI 的偏移固定为 19 秒)。GPS时间和TAI(或其它衍生物)对于导航,电信/广播和空间科学非常重要。
一旦你进入天文学领域,事情就变得更加复杂。地面时间(维基百科)与更常见的刻度有一个小数偏移:TT≅TAI + 32.184 s(到毫秒精度;TT比这更复杂)。
进一步阅读,因为它还没有从这个问题联系起来:程序员相信时间(和时区,日期等)的错误 - 包括一些有趣的背景。