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

Mic*_*das 49 java java-time

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

+01:30:15ISO等偏移量有效吗?如果不是,那么Java根据哪个标准定义此类偏移量?

Jon*_*eet 80

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

在适当地对时区进行标准化之前,在19世纪末和20世纪初的数据中,亚分钟的偏移量很常见。例如,根据IANA数据库,直到1911年,欧洲/巴黎的偏移量为+00:09:21。

我能找到的最新事件是非洲/蒙罗维亚 1972年只有一分钟的路程!

  • GPS时间也从UTC偏移了几秒(当前为UTC + 00:00:18)。 (11认同)
  • @EricLippert:的确感觉差不多是为我写的,是的:)(而且我发现用来查找最新事件的控制台应用程序的长度少于25行,这让我感到很愉快。 LINQ,但可能不太可读...) (8认同)
  • @EricLippert:事实证明LINQ版本更具可读性:https://gist.github.com/jskeet/f1c236d305ad5cb89daafd87941b4d88 (6认同)
  • @JonSkeet:您的评论启发了我找出如何在GNU系统上执行此操作;我想到了这个shell一线软件:`find / usr / share / zoneinfo -type f -exec zdump -i'{}'+ | awk'/ ^ TZ / {curtz = $ 1} / [+-] [0-9] {6} / {getline; 打印$ 1,curtz}'| 排序`。可读性的判断留给情人。 (4认同)
  • @Kundor:TAI(例如,它用作PTP的时基)当前与UTC的偏移量为37秒,与GPS的固定偏移量为19秒。 (3认同)