You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Temporal ZonedDateTime只读属性?及Temporal.now时间调整方法

JavaScript Temporal Polyfill 相关问题解答

1. 如何调整Temporal ZonedDateTime的只读属性?

Temporal的ZonedDateTime是不可变对象,所有实例属性均为只读,无法直接修改。要调整属性,必须通过它提供的实例方法生成新的ZonedDateTime实例:

  • 调整年、月、日、时等时间字段:使用with()方法,传入包含目标字段的对象参数
  • 调整时区:使用withTimeZone()方法,传入目标时区标识符

示例代码:

// 现有ZonedDateTime实例
const now = Temporal.now.zonedDateTimeISO();

// 调整为2025年,生成新实例
const adjustedYear = now.with({ year: 2025 });

// 调整时区为America/New_York,生成新实例
const adjustedTimeZone = now.withTimeZone('America/New_York');

2. 如何将Temporal.now获取的时间调整为当日8点?

不需要手动提取所有属性重新创建实例,直接使用ZonedDateTime的with()方法即可,这是官方推荐的最优方案。该方法会自动处理夏令时切换等边缘场景,比手动拼接更可靠。

示例代码:

// 获取当前时间并调整为当日8点
const today8AM = Temporal.now.zonedDateTimeISO().with({ hour: 8 });

// 如果需要同时重置分、秒、毫秒为0,可以一起指定
const today8AMExact = Temporal.now.zonedDateTimeISO().with({
  hour: 8,
  minute: 0,
  second: 0,
  millisecond: 0
});

内容的提问来源于stack exchange,提问作者Jason Hocker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:06:30