第 3 课
UTC、本地时间与时区
墙钟与时刻、IANA 时区与夏令时偏移。
Unix 时间戳标识一个 瞬间——全球时间线上的一个点。UTC 与 本地时间 是用不同方式给人类 标注 这一瞬间。
UTC
协调世界时(UTC) 是不含季节性偏移的参考时间尺度。日志若写 “all times UTC”,跨区域对比时不必猜测本地规则。
ISO 字符串末尾的 Z 表示 UTC,例如 2024-01-15T08:30:00Z。
本地墙钟
电脑时钟显示 本地墙钟——所在时区的民用时间,含夏令时调整。同一 timestamp,不同开发者可能写出不同读数:
Europe/Berlin的2024-07-01 09:00Asia/Shanghai的2024-07-01 15:00
可能描述 同一瞬间。
IANA 时区名
系统使用 America/New_York、Asia/Tokyo 等 IANA 时区数据库 名称,内含历史偏移变更。跨夏令时边界安排未来事件时,优于固定写 “UTC+8”。
纯偏移不是时区。 某天的 UTC+8 无法替代完整 DST 规则。
存储与展示
后端常见做法:
- 存 UTC 瞬间(时间戳或
TIMESTAMPTZ) - 仅在 UI 或按用户时区的报表中转本地
要点
时间戳存 何时;时区决定 钟面怎么读。先分清你在看哪一层。