时区
其他IANA 时区数据库与 UTC
现代软件时区处理以 UTC 为存储标准、IANA 时区数据库(tzdata)为命名体系(如 Asia/Shanghai),夏令时规则由 tzdata 持续更新,是跨地区系统最易出错的知识点之一。
UTC 与历史
1960 年起 UTC(协调世界时)取代格林尼治平时代作为国际时间基准,由国际计量局(BIPM)与国际地球自转服务(IERS)共同维护,闰秒不定期插入(2016 年后已决定 2035 年前废止该机制)。UTC 偏移如 +08:00 是"本地时间 - UTC"的差值,与地理时区名义值可能不同。
IANA tzdata
IANA 时区数据库(Olson 库,1986 年起由 Arthur David Olson 创建,现由 IANA 维护)用"区域/城市"命名(Asia/Shanghai、America/New_York),内含该地历史上有据可查的全部时区变更(包括夏令时)。命名取代表城市不代表行政级别;Asia/Shanghai 覆盖整个中国标准时间(CST,UTC+8,1949 年起全国统一)。
工程最佳实践
存储与传输一律 UTC 或带偏移的 ISO 8601(YYYY-MM-DDTHH:mm:ssZ,ISO 8601:2019);仅在展示层转本地时区;绝不用"本地时间字符串"存库;定时任务用 IANA 名而不是固定偏移(夏令时会让固定偏移漂移一小时)。JavaScript 的 Date 曾是重灾区,现代方案用 Intl 与 Temporal(Stage 3 提案)。