Temporal API 实战:超越 Date 的日期数学与时区处理
使用提案 Temporal 对象进行精确的日期算术、时段计算和跨时区日程安排。 · 难度:入门 · +10XP
Temporal API 实战:超越 Date 的日期数学与时区处理
JavaScript 原生 Date 对象因时区混乱和可变性饱受诟病。Temporal 提案(已处于 Stage 3)引入了不可变类型如 Temporal.PlainDate、Temporal.ZonedDateTime 和 Temporal.Duration。本教程将展示如何安全地加减日期(考虑闰年、夏令时),如何计算两个日期之间的实际天数,以及如何将本地时间转换为任意时区。你还会学到如何处理重复的时间点(夏令时回拨)和使用 Temporal.Now 获取高精度时间戳。我们会用实际示例(如计算下一次满月日期)来强化理解。
const date = Temporal.PlainDate.from('2025-03-15');
const next = date.add({ months: 1, days: 10 });
console.log(next.toString()); // 2025-04-25
const zoned = Temporal.ZonedDateTime.from('2025-03-15T12:00[America/New_York]');
console.log(zoned.withTimeZone('Asia/Shanghai').toString());