UTC
UTC(Coordinated Universal Time,协调世界时)是全球时间的统一基准。它由原子钟计量的国际原子时(TAI)加上闰秒校正得到,使其与地球自转决定的天文时间 UT1 相差不超过 0.9 秒。所有时区都以 UTC 为原点、用偏移量表示,如北京时间是 UTC+8;带 Z(Zulu)后缀的时间即代表 UTC,例如 2026-07-23T00:00:00Z。
它和时间戳关系密切:Unix 时间戳定义为从 1970-01-01 00:00:00 UTC 起经过的秒数(且不计闰秒)。所以时间戳本身不带时区,它永远是相对 UTC 的绝对时刻,只有显示成本地时间时才需要叠加时区偏移。用 timestamp 做单条转换、timestamp-batch 做批量转换时,先想清楚目标是 UTC 还是本地时间,能避免差几个小时的错位。
几个常见误区:
- UTC 不是「某一个时区」,而是所有时区共同的参照基准,也不随夏令时改变。
- UTC 与 GMT 并不严格等价:GMT 基于地球自转,UTC 基于原子钟,日常两者偏移都相当于 +0,但技术与正式场合应写 UTC。
- 闰秒只影响 UTC 的显示,不改变 Unix 时间戳的数值。
常见问题
UTC 和 GMT 是一回事吗?
不完全是。GMT 是基于地球自转(平太阳时)的旧时区标准,UTC 是基于原子钟、并用闰秒校正的现代时间标准。日常两者偏移量相同(都相当于 +0),但技术和正式场合应统一使用 UTC。
Unix 时间戳算的是 UTC 时间吗?
是。时间戳表示从 1970-01-01 00:00:00 UTC 起的秒数,本身不含时区信息。它是一个绝对时刻,转成不同地区的本地时间只是叠加不同的时区偏移。
为什么转换后时间差了 8 个小时?
多半是把 UTC 当成了本地时间显示,或反过来。北京时间是 UTC+8,转换时要确认输入和输出各自属于哪个时区,或先统一用 UTC 再手动加偏移。