概述
时间缺陷往往在夏令时切换或月末才暴露,且难以复现。核对时间戳是否以 UTC 与明确类型存储、接口是否传输含偏移或 Z 的 ISO 8601、是否仅在展示时转换,并围绕 DST 与日历边界测试,可消除这类隐蔽缺陷。
关键步骤
- 确认时间戳以 UTC 与明确类型存储。
- 检查接口传输 ISO 8601 含偏移或 Z。
- 仅在展示时转换为用户时区。
- 围绕 DST、月末与闰日测试。
验证
- 跨 DST 的测试显示正确的本地时间。
- 无缺少时区的存储时间戳。
- 不同用户看到正确本地时间。
- 标准有文档记录。
决策点
瞬时时间应以 UTC 存储,仅当墙上时间重要(如循环闹钟)才另存时区;时区处理应使用具备时区能力的库。
适用范围
本条目围绕「时区与日期处理评审工作流」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
// store UTC, convert at display
const instant = new Date().toISOString(); // 2026-10-23T12:00:00Z
const local = new Intl.DateTimeFormat('en-GB', { timeZone: userTz, timeStyle: 'short' }).format(new Date(instant));