【问题标题】:Handling leapseconds under unix处理unix下的闰秒
【发布时间】:2015-11-23 21:25:40
【问题描述】:

我有一个库,它需要知道自上一个纪元以来的秒数。这需要跨越闰秒边界。使用户更容易使用的功能之一是以 unix 时间指定时间 - 这当然不考虑闰秒。如果我知道闰秒何时已(或将要)插入(或删除),这很容易处理。

除了保留一个硬编码表(或类似表)之外,是否有任何标准方法可以获取闰秒事件列表,这当然需要每两年更新一次?

【问题讨论】:

  • 您使用哪种编程语言来解决您的问题?你会用Java吗?如果是,请查看此帖子(stackoverflow.com/q/33698664/2491410)。
  • 一种真正的语言 - C
  • 感谢您的反馈,顺便说一下,托管在“iana.org/tz”上的著名 tzdb 存储库还包含闰秒事件列表,因此您可以连接或下载它(但我没有不知道如何使用 C)。
  • 这是一个来自 NIST 的闰秒事件列表(直接从 IERS 数据构建),它很容易用任何编程语言解析:ietf.org/timezones/data/leap-seconds.list 它还在其标题 cmets 中包含一个很好的解释。

标签: unix time leap-second


【解决方案1】:

以下是您问题的两个部分答案:

  1. 因为闰秒从根本上来说是不可预测的——它们是由地球自转的不规则变化引起的,最终是由于地球上四处晃动的质量分布——它们的定义不超过几个月提前。因此,如果您需要了解闰秒,则需要每六个月更新一次,即使更新是“今年 1 月/7 月没有闰秒”。

  2. 如果您只需要上一个纪元的秒数​​,则不必使用 UTC。 GPS 时间本质上是没有闰秒的 UTC(也就是说,当 GPS 设备向您显示民用时间时,它本质上是向您显示 GPS 时间加上闰秒计数)。因此,如果您能掌握 GPS 时间,那么您就被分类了。你可以从 GPS 接收器中得到它。或者,虽然我不知道,但如果无法说服 NTP 服务器为您提供 GPS 时间,我会感到惊讶。

【讨论】:

  • 谢谢诺曼,虽然这并不能回答问题——我明白这一切(我是天体物理学家)——我希望可能有一个 unix 界面来获得闰秒记录,而无需自己动手。
  • 啊,在 那个 的情况下,你可能想使用slalib(虽然我没有“从这里下载”的方法——长篇大论),或SOFA,或者您可能不得不求助于Tempo(取决于您的需要)。 slalib 内置在很多东西中,因此一旦您知道要查找它,就可以方便地使用它;否则,如果我是你,我会看 SOFA;节奏是锤击坚果的领域,尽管我对它的经验很少。 Unix 时间很糟糕(不是线性的),并且很糟糕地摸索闰秒。
  • 还有@Chris,我知道你是一名广播员,在这种情况下,Tempo 可能会出现在你的未来......那,以及解释性补充。 “Unix 时间”在很大程度上对精确工作毫无用处。
  • 正在寻找其他东西,但显然是被这次谈话所激发,我今天重新找到了‘the unix leap second mess’ 的书签,其中包括一个指向NTP and leap seconds 讨论的链接。看来我的猜测是错误的,并且 GPS 时间无法从 NTP 服务获得。 ('nuff 评论,现在...)
猜你喜欢
  • 2015-09-18
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2016-07-05
  • 2011-07-16
  • 2019-10-30
  • 2015-11-12
  • 2016-02-15
相关资源
最近更新 更多