apsis-book/content/concepts/physics/leap-seconds.zh.md

77 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 闰秒
tags: 时间, utc, 闰秒, iers
summary: UTC 为何存在阶跃间断,以及内嵌闰秒表如何处理它们。
---
# 闰秒
UTC 通过插入或删除整秒来保持与地球自转接近,而地球自转并不均匀。每次插入都是 UTC 时钟中的阶跃间断。本文档解释该机制,以及内核为避免间断参与运算所采用的约定。
## 定义
闰秒是国际地球自转与参考系统服务在 Bulletin C 公告中宣布的对 UTC 的一秒调整。该调整使
$$
\lvert \text{UT1} - \text{UTC} \rvert < 0.9\,\text{s}
$$
UT1 是由地球自转定义的尺度。地球自转速率并非常数,因此自某历元起经过的秒数与地球转过的角度不会保持同步。闰秒用于弥合这一差距。
## 数学含义
TAI 与 UTC 之间的偏移是日期的阶跃函数:
$$
\Delta\text{TAI}(t) = 10\,\text{s} + N(t)
$$
其中 `N(date)` 是 1972-01-01 至该日期之间插入的闰秒数。内核以 TAI 存储时刻,因此该偏移只在时刻与 UTC 之间转换时应用:
$$
\begin{aligned}
\text{tai} &= \text{utc} + \frac{\Delta\text{TAI}(\text{utc})}{86400} \\
\text{utc} &= \text{tai} - \frac{\Delta\text{TAI}(\text{utc})}{86400}
\end{aligned}
$$
第二个关系式需要在 UTC 时刻处的偏移,而该时刻正是待求量,因此查找表中包含近似时刻的区间,并校验结果的自洽性。实现通过定位适用的表项来完成。
插入秒使一个 UTC 日历日包含 86,401 秒。包含插入的分钟从 0 秒运行到 60.999 秒,因此日历值的秒字段可以超过 59。
## 单位约定
表中为每次插入存储偏移发生变化的约化儒略日,以及变化后的偏移秒数。二者都是精确的,因为约化儒略日就是公告发布值换算得到的天数。
## 适用边界
表起始于 1972-01-01,即现代 UTC 体系的起点。在此之前偏移不是整数秒,闰秒概念也不适用;此类时刻的转换返回空值。
表止于其中包含的最新一次插入。更晚的时刻使用最后已知偏移转换,在下次插入之前是正确的。需要确知远未来结果的调用方必须将其视为预测。
闰秒原则上可以为负,即删除一秒并使某分钟只有 59 秒,但从未有负插入被宣布。实现把偏移当作带符号数处理,因此负插入也能正确表示,虽然会产生没有第 59 秒的 UTC 分钟。
## 为什么时刻不以 UTC 存储
以 UTC 存储时刻会使减法在跨越插入时出错。表区域内的两个 UTC 秒在时间上相隔一个刻度,却可能对应 1 秒或 0 秒的经过时间,取决于它们落在阶跃的哪一侧。内核通过在存储时使用 TAI、仅在边界处转换来回避这一问题。见 [[time-scales]]。
## 与其他方案对比
| 方案 | 经过时间精确 | 与民用时间一致 | 处理插入 | 此处采用 |
|------|--------------|----------------|----------|----------|
| 存储 TAI,边界处转换 | 是 | 显示时一致 | 是,依据表 | 是 |
| 存储 UTC,直接相减 | 否 | 是 | 在阶跃处不正确 | 否 |
| 存储距固定历元的 TAI 秒 | 是 | 需要转换 | 是,依据表 | 用于时长 |
| 忽略闰秒,使用固定偏移 | 是 | 否,最大差一分钟 | 否 | 否 |
| 全程使用 UT1 | 对自转是 | 否 | 不适用 | 否 |
## 来源
- 闰秒公告:IERS Bulletin C。
- 偏移历史:随公告发布的表,由 `apsis-leap` 内嵌。
## 另见
- [[time-scales]]:各尺度与存储约定
- [[calendar-and-mjd]]:日期转换