用途:识别并修复日期时间正确性缺陷。核心规则是区分 instant(全局时间线上的一个点,如 epoch/UTC)与 date-only / wall-clock 值(在指定时区前并非 instant),两者不可混用,每个边界都要显式声明时区。
主要能力:存储与计算方面,要求 instant 以 UTC/epoch 或带偏移的 RFC 3339 保存;指出 new Date("2026-06-14") 会把纯日期 ISO 解析为 UTC 午夜,在负偏移时区显示为前一天(off-by-one),而 "2026-06-14T09:00" 这类无偏移日期时间按本地解析,默认相反;强调一天不等于 24 小时,跨 DST 的本地午夜可能不存在或被重复,日历运算需按区进行,不能加 86_400_000 毫秒。推荐在可用时使用 Temporal(Instant、PlainDate/PlainDateTime、ZonedDateTime),并注意其尚未在所有常青浏览器目标普及,需做特性检测与 @js-temporal/polyfill 兜底,或用 Luxon、date-fns-tz。显示与输入方面,要求为用户可见时间显式固定 Intl.DateTimeFormat 的 timeZone;input type=datetime-local / date / time 返回无时区的 floating local 字符串,读写时需显式附加并往返处理预期时区;避免在渲染时计算依赖时区或区域的文本,改为传稳定序列化的 instant 并在两端用固定显式时区渲染。
适用场景:日期时间行为依赖时区、DST、纯日期解析、floating local 输入、SSR/服务端时区差异或 instant 与 wall-clock 取舍时。
限制与边界:仅当日期时间问题改变真实用户或时区的渲染、存储或比较行为时才值得提交 PR,如无时区存储的 instant、负偏移时区下打印前一天、跨 DST 的 24 小时算术、按运行时环境时区渲染输出。应拒绝弱发现:仅开发日志或仅 UTC 测试夹具、从不跨时区/DST 边界的值、纯区域显示格式(分组、MM/DD 与 DD/MM),后者归 i18n-copy-and-layout;渲染中 new Date() 引起的服务端/客户端不一致归 ssr-hydration-mismatch。最小有用 PR:在边界显式声明时区(存 epoch/偏移、保持纯日期为纯日期、固定 Intl timeZone),并增加在非 UTC 时区或跨 DST 运行的测试。