问题标签 [leap-second]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
106 浏览

java - 为什么 java.time.Instant 不显示任何闰秒?

在下面编辑答案摘要:

我试图更多地了解 java.time.Instant 和闰秒。如果我运行这个:

我预计会创建一个接近 2020 年初的时间/日期,即 1970 年 1 月 1 日之后 365 天的 50 批,因此允许有一堆闰年,短短几天。我确实得到了这样的约会。到目前为止,一切都很好。

我得到的日期/时间显示为2019-12-20T00:00:00Z. 令我惊讶的是,由于闰秒,我认为结果也会比午夜晚几秒钟。但这正是世界标准时间的午夜。

我误解了闰秒,还是 java.time.Instant (或者完全是别的东西!)?

编辑:正如评论者所指出的,Java 时间不需要对闰秒做任何事情,可能是因为 Unix 时间忽略了它们,其原因在 Wikipedia 文章中以及通过另一个问题间接指出。症结似乎是未来的闰秒是不可预测的,但当天文学家同意地球已经减慢到足以保证它的速度时,它就会被添加。而且这种放缓似乎是不可预测的。

请注意,我没有删除我的问题,因为其他人提到的问题中没有提到 Unix 时间和 java 时间之间的关联,所以我相信这增加了一些小的优点。

感谢您的输入!

0 投票
2 回答
418 浏览

python - 自 1970 年 1 月 1 日以来经过了多少秒,包括闰秒?

Unix 时间戳由下式给出:

给出自 1970 年 1 月 1 日以来经过的秒数,没有闰秒。

只是出于好奇,如何获得自该日期以来经过的真实秒数,包括闰秒?(即时间轴上这两个事件之间的距离)

笔记:

  • 示例:时间戳范围867715190.000 .. 867715202.000表示 13 秒的“实际持续时间”(用计时器测量),因为 1997 年的这一天有一个闰秒,而 Unix 时间戳增加了 +12。

  • 示例 2:从 1970 年 1 月 1 日到 2020 年 1 月 1 日(这 50 年间隔中有 12 个闰年)之间经过的实际时间是(365*50+12)*24*3600 + number_leap_seconds不是 (365*50+12)*24*3600。但是我们看到datetime.datetime.utcfromtimestamp((365*50+12)*24*3600)的是2020-01-01 00:00:00,很明显,闰秒没有被考虑在内。

  • 链接到Python 在闰秒返回什么,以及Unix 时间和闰秒

0 投票
1 回答
63 浏览

java - 为什么 Java Unix 时间和日历计算准确时间?

我听说Unix时间不包括“闰秒”。而且我还听说Java Calendar API 不包括闰秒。

自 1972 年以来,闰秒增加了 27 秒。Unix 时间开始于 1970-01-01 00:00:00 (UTC)。

所以,我认为当前的 UTC 时间和 Unix 时间之间有 27 秒的差异。

为了澄清我的想法,我做了一些如下的实验。1614766198 是 2021-03-03 10:10:00 (UTC+0) 的 Unix 时间

上面代码的结果是

输出看起来像“2021-03-03 10:09:58”。

所以,我的问题是,为什么 Java Calendar API 从 1970-01-01 00:00:00 (UTC) 返回 2 秒的差异而不是 27 秒的差异?