Intl.RelativeTimeFormat

The Intl.RelativeTimeFormat object is a constructor for objects that enable language-sensitive relative time formatting.

Syntax

new Intl.RelativeTimeFormat([locales[, options]]) 

Parameters

locales

Optional. A string with a BCP 47 language tag, or an array of such strings. For the general form and interpretation of the locales argument, see the Intl page.

options
Optional. An object with some or all of the following properties:

Description

Properties

Intl.RelativeTimeFormat.prototype
Allows the addition of properties to all objects.

Methods

Intl.RelativeTimeFormat.supportedLocalesOf()
Returns an array containing those of the provided locales that are supported without having to fall back to the runtime's default locale.

RelativeTimeFormat instances

Properties

RelativeTimeFormat instances inherit the following properties from their prototype:

Intl.RelativeTimeFormat.prototype.constructor
A reference to Intl.RelativeTimeFormat.

Methods

RelativeTimeFormat instances inherit the following methods from their prototype:

Intl.RelativeTimeFormat.prototype.format()
Method that formats a value and unit according to the locale and formatting options of this Intl.RelativeTimeFormat object.
Intl.RelativeTimeFormat.prototype.formatToParts()
Method is a version of the format method which it returns an array of objects which represent "parts" of the object, separating the formatted number into its constituent parts and separating it from other surrounding text

Examples

Using format

The following example shows how to create a relative time formatter using the English language.

// Create a relative time formatter in your locale
// with default values explicitly passed in.
const rtf = new Intl.RelativeTimeFormat("en", {
    localeMatcher: "best fit", // other values: "lookup"
    numeric: "always", // other values: "auto"
    style: "long", // other values: "short" or "narrow"
});

// Format relative time using negative value (-1).
rtf.format(-1, "day");
// > "1 day ago"

// Format relative time using positive  value (1).
rtf.format(1, "day");
// > "in 1 day"
Note: If numeric:auto option is passed, it will produce the string yesterday or tomorrow instead of 1 day ago or in 1 day. This allows to not always have to use numeric values in the output.
// Create a relative time formatter in your locale
// with numeric: "auto" option value passed in.
const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });

// Format relative time using negative value (-1).
rtf.format(-1, "day");
// > "yesterday"

// Format relative time using positive day unit (1).
rtf.format(1, "day");
// > "tomorrow"

Using formatToParts

The following example shows how to create a relative time formatter returning formatted parts

const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });

// Format relative time using the day unit.
rtf.formatToParts(-1, "day");
// > [{ type: "literal", value: "yesterday"}]

rtf.formatToParts(100, "day");
// > [{ type: "literal", value: "in " }, { type: "integer", value: "100", unit: "day" }, { type: "literal", value: " days" }]

Specifications

Specification Status Comment
Intl.RelativeTime proposal Stage 3  

Document Tags and Contributors

Contributors to this page: littledan, romulocintra, chrisdavidmills
Last updated by: littledan,