UTC 究竟是什么,它和 GMT 差在哪里
· 约 1 分钟
UTC 不是时区。它是每个时区据以定义的参照标准,由大约 450 台原子钟共同维持,并且从不为夏令时挪动——系统之所以用它,原因正在于此。
人们把“UTC”和“GMT”当成一回事来用。多数时候不会出岔子,因为多数时候两者显示同一个读数。但它们是不同种类的东西,而这个差别恰恰解释了为什么其中一个才是该存进数据库的那个,另一个不是。
UTC 是标准,不是地方
协调世界时由国际计量局维持,取自分布在全球约 85 家机构的四百五十台左右原子钟的加权平均。这些钟测量铯-133 原子的共振频率,其稳定度大致是一亿年差一秒。
没有谁的当地时间在法律上等于 UTC。连坐落在本初子午线上的英国,一年里也有七个月处在 UTC+1。UTC 是描述任何当地时间时所依据的那个定点——尺子上的零,而不是地图上的一处标记。
对做软件的人来说最重要的性质是:UTC 从不为夏令时挪动。 它没有季节性变化,没有政治沿革,也没有例外。航空、航运、金融清算,以及世上一切分布式系统之所以用它,全部理由就在这里。
GMT 是一个有履历的时区
格林尼治平时是格林尼治皇家天文台的平太阳时。它由地球自转来定义,而地球不是一台精密仪器:这颗行星会摇摆,会不均匀地变慢,偶尔还会加快。
从 1884 年到 1972 年,GMT 一直是世界的时间标准。它被 UTC 取代,恰恰是因为原子钟被证明是比一颗行星更好的参照。GMT 作为一个时区的名字活了下来——英国冬天用的那个,以及西非若干国家全年都用的那个。
所以:UTC 从不实行夏令时;而英国所用的 GMT 实行。 英国每年三月离开它进入英国夏令时,十月再回来。如果一位英国同事在七月说“下午三点 GMT”,他几乎肯定指的是下午三点 BST,也就是 14:00 UTC。这个误会常见到值得开口确认,而不是自行假定。
为什么缩写是 UTC
英文和法文的缩写都没有胜出。说英语的人主张 CUT,取自“coordinated universal time”;说法语的人主张 TUC,取自“temps universel coordonné”。国际电信联盟最后定在 UTC,它与两种语言都不相符,因而对双方同等地不客气。以它自己的方式,这是一个完美的外交结局。
闰秒,以及它即将到来的废止
地球并非匀速自转。为了不让 UTC 从太阳时上漂走,人们时不时插入额外的一秒:1972 年到 2016 年之间共 27 次。在一个闰秒期间,UTC 的钟会显示 23:59:60——一个真实存在、而多数软件根本表示不了的时刻。
闰秒引发过实实在在的故障。2012 年,一次闰秒放倒了 Reddit、Mozilla 的服务和几家航空公司的订票系统,全都经由同一个 Linux 内核缺陷。2017 年,Cloudflare 的 DNS 出问题,因为一次跨越插入点的时长计算变成了负数。
2022 年 11 月,国际计量大会表决在 2035 年之前停止增加闰秒。此后将允许 UTC 相对太阳时漂移,等这道缝隙大到令人不便时再重新处理——大概是一个世纪以后的事。
你的浏览器不暴露闰秒。JavaScript 的时钟当它们从未发生过,因此跨越闰秒的一段时长会少报一秒。对几乎所有用途来说这是正确的取舍;如果你在做卫星导航,你早就知道了。
到底该怎么做
时间戳按 UTC 存。 不按用户所在时区,不按服务器所在时区,也不按公司总部碰巧所在的时区。UTC 的一个时刻没有歧义、可排序,而且不受任何政府改主意的影响。
在展示的那一刻再转成当地时间,用读者所在的时区和运行环境自带的 IANA 数据库副本。
想说 UTC 就写 UTC。 在规格文档里写“GMT”,等于邀请别人把它读成英国当地时间,而在夏天那要差一个小时。“12:00 UTC”在一年中的任何一天都只有一个意思。
用 ISO 8601 的 Z 后缀。 2026-03-08T14:30:00Z 就是 UTC,读不出别的意思。2026-03-08T14:30:00 是某个未指明时区的当地时间,也就是说,它压根不是一个时间戳。
时间尺度的一家子
UTC 只是若干相关标准中的一个,而这些差别偶尔要紧。
TAI —— 国际原子时。没有闰秒的原始原子时标。TAI 目前比 UTC 快 37 秒,每插入一个闰秒差距就拉大一点。GPS 卫星运行在一个相对 TAI 偏移的时标上。
UT1 —— 地球的真实自转,以遥远的类星体为基准测得。这正是 UTC 的闰秒一直在追赶的东西。UTC 被维持在与 UT1 相差 0.9 秒之内——准确地说,是在 2035 年那项决定之前。
GPS 时间 —— 1980 年 1 月与 UTC 对齐启用,此后一直忽略闰秒。它目前比 UTC 快 18 秒。接收机会替你修正;直接读取原始 GPS 时间的系统有时不会。
Unix 时间 —— 自 1970 年起的秒计数,它靠重复一秒而不是数上一秒,假装闰秒并不存在。这使它并不完全等于已流逝的秒数,而这个微妙之处已经咬过那些跨越插入点测量时长的人。
对几乎所有软件而言,UTC 就是正确答案,其余都是谈资。但凡涉及卫星、高频交易的时间戳或科学仪器,这些区分就是承重的。
为什么“UTC 时间”是废话,我们还是这么写
T 就是 time,所以“UTC 时间”等于“协调世界时时间”。较真的人会有意见。
本站的页面在标题里还是写“UTC 时间”,因为这是人们搜索的说法,也是他们敲进去的说法。有一种正确会让你失去读者,而在一个缩写上咬文嚼字正落在其中。到了正文里,读者既然已经到了这儿,就只写 UTC。