有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么Java支持秒精度的时区偏移?

On Wikipedia时区偏移解释为与标准UTC时间的小时和分钟差异。但是,DateTimeFormatter支持区域偏移模式XXXXX,该模式“输出小时、分钟和可选秒,并带有冒号,例如“+01:30:15”。”

+01:30:15ISO这样的偏移量有效吗?如果没有,Java是基于哪个标准定义这种偏移量的


共 (2) 个答案

  1. # 1 楼答案

    提高精确度的一个原因是,我们都熟悉的国家时区并不是故事的终点

    如果你看一下Wikipedia's article on UTC下的“另见”部分,你会看到一些时间标准,它们与UTC之间有秒(甚至分数秒)偏移。特别令人感兴趣的是UTC所基于的TAI (International Atomic Time)。目前的差异为37秒,因为UTC包括闰秒,而TAI不包括。因此,支持父标准需要二级精度

    GPS time也会从UTC偏移数秒(相对于TAI的偏移量固定为19秒)。GPS时间和TAI(或其其他衍生物)对导航、电信/广播和空间科学都很重要

    一旦你进入天文学领域,事情就会变得更加复杂Terrestrial time(维基百科)与更常见的量表有一个分数偏移:TT≅ TAI+32.184秒(毫秒精度;TT比这复杂得多)

    进一步阅读,因为它还没有与这个问题联系起来:Falsehoods programmers believe about time (and timezones, dates, etc.)包括一些有趣的背景

  2. # 2 楼答案

    ISO-8601不支持它,但它是IANA时区数据库中记录的有效偏移量

    在时区被适当标准化之前,在19世纪末和20世纪初的数据中,亚分钟偏移量很常见。例如,1911年之前,Europe/Paris的偏移量为+00:09:21(根据IANA数据库)

    我能找到的最新情况是Africa/Monrovia,它在1972年之前有一个亚分钟的偏移量