所以我刚刚了解了闰秒,起初我想“哦,好吧,只需使用 unix 时间戳”然后我读到他们根据一天中的特定秒数调整闰秒以使其与太阳对齐. 见鬼?!
所以我想这不好。是否有严格基于自 1970 年 1 月第一个午夜以来的秒数的时间格式,或某个类似的锚点时间,它不会尝试与我们星球的不稳定自转同步?
编辑:动机:无论一天中的时间或时区如何,都有准确的时间,并且不可能有一个模棱两可的时间。坦率地说,我很惊讶这不是事实,听起来无论谁决定在闰秒中添加,都没有考虑到他们在软件中添加了不必要的小错误。
所以我刚刚了解了闰秒,起初我想“哦,好吧,只需使用 unix 时间戳”然后我读到他们根据一天中的特定秒数调整闰秒以使其与太阳对齐. 见鬼?!
所以我想这不好。是否有严格基于自 1970 年 1 月第一个午夜以来的秒数的时间格式,或某个类似的锚点时间,它不会尝试与我们星球的不稳定自转同步?
编辑:动机:无论一天中的时间或时区如何,都有准确的时间,并且不可能有一个模棱两可的时间。坦率地说,我很惊讶这不是事实,听起来无论谁决定在闰秒中添加,都没有考虑到他们在软件中添加了不必要的小错误。
你问的是时间标准。在这方面,了解有关该标准打算如何使用的背景非常重要。
直接回答您的问题,您所描述的时间标准是国际原子时(TAI)。它是世界上所有计时机构(NIST、NPL 等)用来协调其时钟的标准。它对这个目的非常有用,因为这就是它的设计目的。它没有闰秒。
但是,TAI 很少直接用于计算或业务。对我们大多数人来说唯一重要的时间标准是协调世界时(UTC)。这是您计算机的系统时间跟踪的内容,我们通常使用NTP同步到此标准。它确实有闰秒。
PTP协议可用于将计算机时钟与TAI或 UTC同步。这是因为 TAI 是基础,但协议单独携带 UTC 和 TAI 之间的当前偏移量。
大多数系统不显示闰秒。相反,它们通常在同步期间被吸收。换句话说,在闰秒发生后,系统可能会与 UTC 偏差一秒,直到下一次同步。但是,此行为可能因系统和平台而异。有些人可能会选择直接显示它。有些人可能会在一天中“抹掉”闰秒。
Unix 时间戳的有趣之处在于它们都有闰秒和没有闰秒,这取决于您如何解释问题。它们确实有闰秒,因为时间戳与 UTC 对齐,因此您解释的任何时间戳都包括迄今为止发生的所有闰秒。但是它们没有闰秒,因为在计算中没有考虑它们。1970-01-01T00:00:00Z
该计算是自 Unix 纪元 ( )以来的精确秒数。换句话说,闰秒本身的 Unix 时间戳(例如2016-12-31T23:59:60Z
)是不明确的。
最终,在日常计算中,您可能不应该选择 UTC 以外的标准或担心 Unix Timestamp 闰秒的模糊性,除非您有闰秒成为问题的非常具体的用例。