GPS 时间是从 1980-01-06T00:00:00Z 起算的秒数。只有当它的源纪元和单位一起传递时,这个数才有意义——数字本身不会告诉你它属于哪块钟。
换算公式
Unix 秒 = GPS 秒 + 315964800 − GPS 到 UTC 的闰秒偏移
转换器按这个关系给出 Unix 秒、epoch 毫秒、ISO 8601 UTC 和可读的 UTC 值。排查日志或导出数据时,请把原始值也留着,方便日后复核换算是否正确。
容易出错的地方
GPS 时间不计闰秒。当前的偏移量对近期的值够用,但换算历史数据时,得用事件发生当时生效的那个偏移量。
更稳妥的做法
- 动手算之前,先确认平台和字段名。
- 数值可能超出 JavaScript 安全整数范围时,用字符串保留原始值。
- 在边界上一次性转换完,之后只存储和比较单位明确的 Unix 值。
- 只有在把结果呈现给人看时,才用具名时区做格式化。
相关格式转换器
Frequent questions:
- Q: GPS 纪元是什么?
- A: GPS 时间从 1980 年 1 月 6 日 00:00:00 UTC 开始计。
- Q: GPS 时间为什么比 UTC 快?
- A: 因为 GPS 时间不计闰秒,而 UTC 计。1980 年以来 UTC 已累计插入 18 个闰秒,所以 GPS 目前比 UTC 快 18 秒。
- Q: 怎么把 GPS 时间转成 Unix 时间?
- A: 加上 315,964,800 秒(1970 到 1980 之间的间隔),再减去当前 18 秒的闰秒偏移,就得到 UTC 口径的 Unix 时间戳。