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

瀏覽器相容性

另見