Temporal.PlainDateTime.prototype.with()
Temporal.PlainDateTime
实例的 with()
方法返回一个新的 Temporal.PlainDateTime
对象,该对象表示此日期-时间,其中一些字段已替换为新值。由于所有 Temporal
对象都被设计为不可变,因此此方法实质上充当日期-时间字段的设置器。
要替换 calendarId
属性,请改用 withCalendar()
方法。
语法
js
with(info)
with(info, options)
参数
info
-
一个对象,包含
Temporal.PlainDateTime.from()
识别的至少一个属性(calendar
除外):day
、era
和eraYear
、hour
、microsecond
、millisecond
、minute
、month
、monthCode
、nanosecond
、second
、year
。未指定的属性使用原始日期-时间的值。你只需提供month
或monthCode
中的一个,以及era
和eraYear
或year
中的一个,另一个将相应更新。 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 |
浏览器兼容性
加载中…