为什么Java支持秒精度的时区偏移?
On Wikipedia时区偏移解释为与标准UTC时间的小时和分钟差异。但是,DateTimeFormatter支持区域偏移模式XXXXX
,该模式“输出小时、分钟和可选秒,并带有冒号,例如“+01:30:15”。”
像+01:30:15
ISO这样的偏移量有效吗?如果没有,Java是基于哪个标准定义这种偏移量的
你可以在下面搜索框中键入要查询的问题!
On Wikipedia时区偏移解释为与标准UTC时间的小时和分钟差异。但是,DateTimeFormatter支持区域偏移模式XXXXX
,该模式“输出小时、分钟和可选秒,并带有冒号,例如“+01:30:15”。”
像+01:30:15
ISO这样的偏移量有效吗?如果没有,Java是基于哪个标准定义这种偏移量的
# 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 楼答案
ISO-8601不支持它,但它是IANA时区数据库中记录的有效偏移量
在时区被适当标准化之前,在19世纪末和20世纪初的数据中,亚分钟偏移量很常见。例如,1911年之前,Europe/Paris的偏移量为+00:09:21(根据IANA数据库)
我能找到的最新情况是Africa/Monrovia,它在1972年之前有一个亚分钟的偏移量