Temporal.PlainDateTime.prototype.with()

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

Temporal.PlainDateTime 实例的 with() 方法返回一个新的 Temporal.PlainDateTime 对象,该对象表示此日期-时间,其中一些字段已替换为新值。由于所有 Temporal 对象都被设计为不可变,因此此方法实质上充当日期-时间字段的设置器。

要替换 calendarId 属性,请改用 withCalendar() 方法。

语法

js
with(info)
with(info, options)

参数

info

一个对象,包含 Temporal.PlainDateTime.from() 识别的至少一个属性(calendar 除外):dayeraeraYearhourmicrosecondmillisecondminutemonthmonthCodenanosecondsecondyear。未指定的属性使用原始日期-时间的值。你只需提供 monthmonthCode 中的一个,以及 eraeraYearyear 中的一个,另一个将相应更新。

options 可选

包含以下属性的对象

overflow 可选

一个字符串,指定日期组件超出范围时的行为。可能的值是

"constrain"(默认)

日期组件被限制在有效范围内。

"reject"

如果日期组件超出范围,则抛出 RangeError

返回值

一个新的 Temporal.PlainDateTime 对象,其中 info 中指定的非 undefined 字段被替换为相应的值,其余字段从原始日期-时间复制。

异常

TypeError

在以下情况之一中抛出

  • info 不是一个对象。
  • options 不是对象或 undefined
RangeError

在以下情况之一中抛出

  • 指定相同组件的提供的属性不一致。
  • 提供的非数字属性无效;例如,如果 monthCode 在此日历中从未是有效的月份代码。
  • 提供的数字属性超出范围,并且 options.overflow 设置为 "reject"
  • 结果不在可表示范围内,该范围是距 Unix 纪元 ±(108 + 1) 天,约 ±273,972.6 年。

示例

使用 with()

js
const dt = Temporal.PlainDateTime.from("2021-07-01T12:34:56");
const newDT = dt.with({ hour: 13 });
console.log(newDT.toString()); // "2021-07-01T13:34:56"
const newDT2 = dt.with({ month: 2, day: 22, millisecond: 222 });
console.log(newDT2.toString()); // "2021-02-22T13:34:56.222"
const nextDecade = dt.with({ year: dt.year + 10 });
console.log(nextDecade.toString()); // "2031-07-01T13:34:56"

有关更多示例,请参阅可以使用 with() 设置的各个属性的文档。

规范

规范
Temporal
# sec-temporal.plaindatetime.prototype.with

浏览器兼容性

另见