Temporal.Instant.prototype.add()
add()
方法是 Temporal.Instant
实例的一个方法,它返回一个新的 Temporal.Instant
对象,该对象表示当前时间点向前移动了指定的时长(其格式可被 Temporal.Duration.from()
转换)。
语法
js
add(duration)
参数
duration
-
一个字符串、一个对象或一个
Temporal.Duration
实例,表示要添加到当前时间点的时长。它会使用与Temporal.Duration.from()
相同的算法将其转换为Temporal.Duration
对象。
返回值
一个新的 Temporal.Instant
对象,表示将 duration
添加到当前时间点。如果 duration
为正,则返回的时间点晚于当前时间点;如果 duration
为负,则返回的时间点早于当前时间点。
异常
RangeError
-
在以下情况之一中抛出
duration
是一个 日历时长(即years
、months
或weeks
存在非零值),或者days
存在非零值,因为在没有日历和时间参考的情况下,日历时长是不明确的。- 结果不在可表示范围内,该范围是距 Unix 纪元 ±108 天,或约 ±273,972.6 年。
描述
本质上,add()
方法首先获取 duration
所代表的纳秒数,将其加到当前时间点的 epochNanoseconds
上,然后从结果创建一个新的 Temporal.Instant
对象。因此,该时长必须明确地代表一个固定的时间量。
如果您想添加一个日历时长,则必须在日历和时区的上下文中执行此加法运算,以考虑月份、年份和日期的可变长度(由于夏令时)。在这种情况下,请将时间点转换为 Temporal.ZonedDateTime
对象,添加时长,然后将结果转换回时间点。
示例
添加 Temporal.Duration
js
const instant = Temporal.Instant.fromEpochMilliseconds(0);
const duration = Temporal.Duration.from("PT1S");
const newInstant = instant.add(duration);
console.log(newInstant.epochMilliseconds); // 1000
添加对象或字符串
js
const instant = Temporal.Instant.fromEpochMilliseconds(0);
const newInstant = instant.add({ seconds: 1 });
console.log(newInstant.epochMilliseconds); // 1000
const newInstant2 = instant.add("PT1S");
console.log(newInstant2.epochMilliseconds); // 1000
添加日历时长
js
const instant = Temporal.Instant.fromEpochMilliseconds(1730610000000);
const duration = Temporal.Duration.from({ days: 1 });
// This instant is 2024-11-03T01:00:00-04:00[America/New_York],
// which is a DST transition day in the US.
const instant2 = instant
.toZonedDateTimeISO("America/New_York")
.add(duration)
.toInstant();
console.log(instant2.epochMilliseconds); // 1730700000000
// The same instant is not a DST transition day in Paris.
const instant3 = instant
.toZonedDateTimeISO("Europe/Paris")
.add(duration)
.toInstant();
console.log(instant3.epochMilliseconds); // 1730696400000
规范
规范 |
---|
Temporal # sec-temporal.instant.prototype.add |
浏览器兼容性
加载中…