Temporal.Duration.from()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The Temporal.Duration.from() static method creates a new Temporal.Duration object from another Temporal.Duration object, an object with duration properties, or an ISO 8601 string.

Syntax

js
Temporal.Duration.from(info)

Parameters

info

One of the following:

Return value

A new Temporal.Duration object, possibly unbalanced, with the specified components.

Exceptions

RangeError

Thrown in one of the following cases:

  • Any of the recognized properties in the info object is not an integer (including non-finite values).
  • A calendar unit (years, months, weeks) has an absolute value ≥ 232.
  • The non-calendar part of the duration (days and below), when expressed in seconds, has an absolute value ≥ 253.
TypeError

Thrown in one of the following cases:

  • info is not an object or a string.
  • All of the recognized properties in the info object are undefined.

Examples

Creating a duration from an object

js
const d1 = Temporal.Duration.from({ hours: 1, minutes: 30 });
console.log(d1.toString()); // "PT1H30M"

const d2 = Temporal.Duration.from({ months: 1, days: 2 });
console.log(d2.toString()); // "P1M2D"

// Uncommon because unbalanced, but valid
const unbalanced = Temporal.Duration.from({
  hours: 100,
  minutes: 100,
  seconds: 100,
});
console.log(unbalanced.toString()); // "PT100H100M100S"

const neg = Temporal.Duration.from({ hours: -1, minutes: -30 });
console.log(neg.toString()); // "-PT1H30M"

Creating a duration from a string

js
const d = Temporal.Duration.from("P1Y2M3W4DT5H6M7.00800901S");
console.log(d.hours); // 5

Creating a duration from another duration

js
const d1 = Temporal.Duration.from({ hours: 1, minutes: 30 });
const d2 = Temporal.Duration.from(d1);
console.log(d2.toString()); // "PT1H30M"

Specifications

Specification
Temporal proposal
# sec-temporal.duration.from

Browser compatibility

BCD tables only load in the browser

See also