← Intl · 浏览器内置的本地化引擎 / Intl.DateTimeFormat:日期与时间 待审核 6 / 9
DateTimeFormat · 日期时间

Intl.DateTimeFormat:日期与时间

date.toLocaleString() 背后就是它。传入一个 Date(某个绝对时刻),它按 locale 决定语言与排列、按 timeZone 决定投影到哪个城市的墙上时间 (wall-clock time)。两种用法:简便的 dateStyle / timeStyle 预设(full/long/medium/short),或逐字段精确指定。

1 · 同一时刻,十一种 locale

把固定时刻 2026-06-06 09:30dateStyle:'full' + timeStyle:'short' 显示:

2 · 全功能 playground

dateStyle/timeStyle 预设,或切到「逐字段」自行指定;再叠加 timeZone 与 hourCycle:

3 · 一个时刻,投影到不同城市

同一个绝对时刻(UTC 2026-06-06T09:30Z),换 timeZone 看各地的墙上时间——这就是「时刻 vs 显示」的分离:

4 · formatToParts & formatRange

formatToParts 把结果拆成带 type 的零件(可自由重排/上色);formatRange 智能合并区间:

**选择原则:**只要「完整的常规日期/时间」→ 用 dateStyle/timeStyle,不必手挑字段;要「只显示月+日」「带星期几」这种精确控制 → 逐字段({ weekday:'long', month:'short', day:'numeric' })。两套不可混用(同时给 dateStyle 和 weekday 会报错)。

timeZone 决定显示,不改时刻。Date 本身只是一个 UTC 时间戳;不传 timeZone 时用运行环境的本地时区。要稳定可复现(如服务端、测试),显式传 timeZone。需要做时区运算(而非只显示)请看 Temporal 系列。