Temporal.PlainYearMonth.prototype.with()
with() 方法用于 Temporal.PlainYearMonth 实例,它返回一个新的 Temporal.PlainYearMonth 对象,该对象表示此年月,并将部分字段替换为新值。由于所有 Temporal 对象都设计为不可变的,因此此方法实际上充当了年月字段的设置器。
没有明显的方法可以创建一个表示不同日历中相同年月的新 Temporal.PlainYearMonth 对象,因此要替换其 calendarId 属性,你需要先使用 toPlainDate() 将其转换为 Temporal.PlainDate 对象,更改日历,然后再转换回来。
语法
js
with(info)
with(info, options)
参数
info-
一个包含
Temporal.PlainYearMonth.from()认可的至少一个属性(除calendar外)的对象:era和eraYear、month、monthCode、year。未指定的属性将使用原始年月的数值。你只需要提供month或monthCode中的一个,以及era和eraYear或year中的一个,另一个将相应地更新。 options可选-
包含以下属性的对象
overflow可选-
一个字符串,指定日期组件超出范围时的行为。可能的值是
"constrain"(默认)-
日期组件被限制在有效范围内。
"reject"-
如果日期组件超出范围,则抛出
RangeError。
返回值
一个新的 Temporal.PlainYearMonth 对象,其中 info 中指定且非 undefined 的字段将被相应的值替换,其余字段将从原始日期复制。
异常
TypeError-
在以下情况之一中抛出
info不是一个对象。options不是对象或undefined。
RangeError-
在以下情况之一中抛出
- 指定相同组件的提供的属性不一致。
- 提供的非数字属性无效;例如,如果
monthCode在此日历中从未是有效的月份代码。 - 提供的数字属性超出范围,并且
options.overflow设置为"reject"。 - 结果不在可表示范围内,该范围是距 Unix 纪元 ±(108 + 1) 天,约 ±273,972.6 年。
示例
使用 with()
js
const ym = Temporal.PlainYearMonth.from("2021-07");
const newYM = ym.with({ year: 2024 });
console.log(newYM.toString()); // "2024-07"
有关更多示例,请参阅可以使用 with() 设置的各个属性的文档。
规范
| 规范 |
|---|
| Temporal # sec-temporal.plainyearmonth.prototype.with |
浏览器兼容性
加载中…