81 lines
3.8 KiB
Markdown
81 lines
3.8 KiB
Markdown
---
|
||
title: 时间尺度
|
||
summary: UTC、TAI、TT 与 GPS,以及为什么时刻只存储在单一尺度上。
|
||
---
|
||
|
||
# 时间尺度
|
||
|
||
时间尺度是为时刻指定数值的规则。实际中同时使用多种尺度,它们并不一致,且差异足以影响指向与测距。本文档定义内核支持的各尺度,并给出消除运算歧义的存储约定。
|
||
|
||
## 定义
|
||
|
||
| 尺度 | 全称 | 速率 | 参考 |
|
||
|------|------|------|------|
|
||
| UTC | 协调世界时 | 不均匀 | 民用时间,通过闰秒向 UT1 靠拢 |
|
||
| TAI | 国际原子时 | 均匀 | 原子钟加权平均 |
|
||
| TT | 地球时 | 均匀 | 地心坐标时 |
|
||
| GPS | GPS 时 | 均匀 | 由 GPS 星座维持 |
|
||
|
||
UTC 是此处唯一不均匀的尺度。它通过插入或删除整秒保持在 UT1(由地球自转定义的尺度)的 0.9 秒以内。包含插入秒的 UTC 分钟有 61 秒。
|
||
|
||
## 数学含义
|
||
|
||
存储模型只有一个数:**TAI 尺度上的约化儒略日**。每个时刻在创建时都转换为 TAI,在显示时再转换回所需尺度。
|
||
|
||
原因在于精确性。两个以 TAI 存储的时刻之差为
|
||
|
||
```text
|
||
seconds = (tai_mjd_later - tai_mjd_earlier) * 86400
|
||
```
|
||
|
||
该差就是二者之间经过的 SI 时间,无论它们是以何种尺度创建的。若时刻以 UTC 存储,同样的减法在跨越闰秒插入时会出错,因为 UTC 时钟在该点没有单一明确的数值。
|
||
|
||
尺度之间的转换除 UTC 外都是常数偏移:
|
||
|
||
```text
|
||
TT - TAI = 32.184 s (常数,IAU 2000)
|
||
TAI - GPS = 19 s (自 1980 年起为常数)
|
||
TAI - UTC = 10 s + (1972 年以来插入的闰秒数)
|
||
```
|
||
|
||
前两项是常数。第三项是日期的阶跃函数,其数值来自 `apsis-leap` 中的闰秒表,即 IERS Bulletin C 发布的表。
|
||
|
||
## 单位约定
|
||
|
||
- 时刻是约化儒略日,单位为天,自 1858-11-17 午夜起算。
|
||
- 时长单位为秒,指均匀经过的 SI 秒。
|
||
- 日历日期包含年、月、日、时、分,以及带小数的秒。在包含插入闰秒的分钟中,秒值可达 60.999。
|
||
|
||
## 适用边界
|
||
|
||
闰秒表起始于 1972 年初,这是现代 UTC 体系的起点。早于该日期的 UTC 时刻在此没有精确表示,转换会返回空值而不是猜测。该表止于其中最新的一条记录;更晚的日期使用最后已知偏移进行转换,在下次插入之前是正确的,因此属于预测而非事实。
|
||
|
||
出于同样原因,远未来的日期也是预测。内核使其可见而非隐藏:未被覆盖的转换返回空值,由调用方决定如何处理。
|
||
|
||
## 时长与日历运算
|
||
|
||
为时刻加上若干秒会使其恰好移动那么多经过时间。按日历方式加上一天是另一种运算:跨越闰秒插入时,一个 UTC 日历日为 86,401 SI 秒。内核只在时刻上暴露第一种运算,并要求转换为日历后才能进行第二种。这是有意为之,因为两者极易混淆,而误差小到在真正产生影响之前不易被察觉。
|
||
|
||
## 表示方式对比
|
||
|
||
| 表示 | 速率均匀 | 闰秒 | 范围 | 此处用途 |
|
||
|------|----------|------|------|----------|
|
||
| TAI MJD | 是 | 不表示 | 广 | 存储与运算 |
|
||
| UTC MJD | 否 | 表示为阶跃 | 1972 年起 | 输入与输出 |
|
||
| 距某历元的 TAI 秒 | 是 | 不表示 | 取决于历元 | 时长 |
|
||
| 日历字段 | 否 | 表示 | 不限 | 人机输入与显示 |
|
||
| GPS 周与秒 | 是 | 不表示 | 1980 年起 | GNSS 接口 |
|
||
|
||
## 来源
|
||
|
||
- 儒略日与约化儒略日约定:IAU,见《天文年历解释性补充》。
|
||
- 地球时相对 TAI 的偏差:IAU 2000 决议 B1.9。
|
||
- 闰秒:IERS Bulletin C。
|
||
- 日历算法:Howard Hinnant,*chrono-Compatible Low-Level Date Algorithms*,2015。
|
||
|
||
## 另见
|
||
|
||
- [[leap-seconds]]:表与插入规则
|
||
- [[calendar-and-mjd]]:日期转换
|
||
- 在线工具试用:*转换时间尺度*
|