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 是一个 日历时长(即 yearsmonthsweeks 存在非零值),或者 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

浏览器兼容性

另见