Temporal.ZonedDateTime.prototype.add()

The add() method of Temporal.ZonedDateTime instances returns a new Temporal.ZonedDateTime object representing this date-time moved forward by a given duration (in a form convertible by Temporal.Duration.from()).

Syntax

js
add(duration)
add(duration, options)

Parameters

duration

A string, an object, or a Temporal.Duration instance representing a duration to add to this date-time. It is converted to a Temporal.Duration object using the same algorithm as Temporal.Duration.from().

options Optional

An object containing the following property:

overflow Optional

A string specifying the behavior when a date component is out of range. Possible values are:

"constrain" (default)

The date component is clamped to the valid range.

"reject"

A RangeError is thrown if the date component is out of range.

Return value

A new Temporal.ZonedDateTime object representing the date-time specified by the original ZonedDateTime, plus the duration.

Exceptions

RangeError

Thrown if the result is not in the representable range, which is ±108 days, or about ±273,972.6 years, from the Unix epoch.

Description

For how calendar durations are added, see Temporal.PlainDate.prototype.add().

Addition and subtraction are performed according to rules defined in RFC 5545 (iCalendar):

These rules make arithmetic with Temporal.ZonedDateTime "DST-safe", which means that the results most closely match the expectations of both real-world users and implementers of other standards-compliant calendar applications. These expectations include:

Adding a duration is equivalent to subtracting its negation.

Examples

undefined

Adding a duration

js
const start = Temporal.ZonedDateTime.from(
  "2021-11-01T12:34:56-04:00[America/New_York]",
);
const end = start.add({
  years: 1,
  months: 2,
  weeks: 3,
  days: 4,
  hours: 5,
  minutes: 6,
  seconds: 7,
  milliseconds: 8,
});
console.log(end.toString()); // 2023-01-26T17:41:03.008-05:00[America/New_York]

For more examples, especially with how different calendars and the overflow option interact with calendar durations, see Temporal.PlainDate.prototype.add().

Specifications

See also