时区
在不同的时区之间转换时间
如何使用时区
- 1选择源时区与目标时区(支持主要城市与 UTC 偏移)。
- 2输入要转换的本地时间。
- 3查看目标时区对应时间,并标注是否处于夏令时。
时区转换怎么算?
目标时间 = 源时间 + (目标偏移 − 源偏移)地球按经度划分 24 个时区,相邻时区相差 1 小时。转换时用目标时区与源时区的 UTC 偏移之差加到原时间上即可。
夏令时(DST)会让部分地区在夏季把时钟拨快 1 小时,导致偏移临时变化。跨国会议、航班与远程协作都要先确认双方是否处于夏令时。
时区以本初子午线(格林威治)为基准,向东每 15 度经度加 1 小时,全球共 24 个理论时区。但实际边界会**沿国界、省界曲折划分**,且有不少「半时区」和「45 分时区」:印度用 UTC+5:30,尼泊尔用 UTC+5:45,澳大利亚中部用 UTC+9:30。所以不能简单用经度推算,必须查时区数据库(IANA tz database)。
夏令时的切换规则也各不相同:欧洲是 3 月最后一个周日 01:00 UTC 拨快、10 月最后一个周日拨回;北美是 3 月第二个周日、11 月第一个周日;南半球(澳大利亚、新西兰)季节相反,在 9–10 月开始、次年 4 月结束。**赤道附近和绝大多数亚洲国家不使用夏令时**。因此写国际化程序时,绝不能把偏移硬编码成固定值,必须用时区 ID 查询。
| 时区 | 标准偏移 | 夏令时偏移 | 是否用夏令时 |
|---|---|---|---|
| UTC(协调世界时) | UTC+0 | 无 | 否 |
| 中国标准时 CST | UTC+8 | 无 | 否(1991 年起停用) |
| 日本标准时 JST | UTC+9 | 无 | 否 |
| 中欧时间 CET | UTC+1 | UTC+2 | 是 |
| 英国时间 GMT/BST | UTC+0 | UTC+1 | 是 |
| 美国东部 ET | UTC−5 | UTC−4 | 是 |
| 美国太平洋 PT | UTC−8 | UTC−7 | 是 |
| 印度标准时 IST | UTC+5:30 | 无 | 否 |
主要时区偏移与夏令时对照
常见问题
什么是 UTC 偏移?
UTC 偏移表示该时区相对协调世界时(UTC)的小时差,如北京为 UTC+8、伦敦冬季为 UTC+0。
夏令时会影响转换吗?
会。实行夏令时的地区在夏季偏移 +1 小时,转换时务必勾选对应日期是否已生效。
为什么同一国家有多个时区?
幅员辽阔的国家(如美国、俄罗斯)横跨多个经度,自然划分出若干时区。
UTC 和 GMT 是一回事吗?
日常使用可以互换,但严格来说不同。GMT(格林威治平太阳时)是基于地球自转的天文时间,已被 UTC(协调世界时)取代。UTC 基于原子钟,精度极高,通过闰秒与地球自转保持同步,误差控制在 0.9 秒内。所有现代系统的时间标准都是 UTC,GMT 只在英国法律和一些传统场合沿用。
服务器应该用什么时区?
统一用 UTC 存储和传输,只在展示给用户的那一刻才转换成本地时区。这样做的好处是:日志可以跨地域比对、避免夏令时切换时的数据重复或丢失、数据库迁移不会因时区配置变化而错乱。前端用 Intl.DateTimeFormat 或 dayjs/luxon 做展示层转换即可。已有系统的本地时间存量数据迁移到 UTC 时要特别注意逐条确认基准。
