Web/JavaScript/Reference/Global objects/Intl/RelativeTimeFormat
The Intl.RelativeTimeFormat object enables language-sensitive relative time formatting.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Constructor
Intl.RelativeTimeFormat.RelativeTimeFormat()- Creates a new
Intl.RelativeTimeFormatobject.
Static 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.
Instance methods
Intl.RelativeTimeFormat.prototype.format()- Formats a
valueand aunitaccording to the locale and formatting options of the givenIntl.RelativeTimeFormatobject. Intl.RelativeTimeFormat.prototype.formatToParts()- Returns an
Arrayof objects representing the relative time format in parts that can be used for custom locale-aware formatting. Intl.RelativeTimeFormat.prototype.resolvedOptions()- Returns a new object with properties reflecting the locale and formatting options computed during initialization of the object.
Examples
Basic format usage
The following example shows how to use a relative time formatter for 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"
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" }]
Polyfill
formatjs Intl.RelativeTimeFormat polyfill
Specifications
| Specification | Status | Comment |
|---|---|---|
| ECMAScript Internationalization API (ECMA-402)The definition of 'RelativeTimeFormat' in that specification. | Stage 4 |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RelativeTimeFormat
|
Chrome
Full support 71 |
Edge
Full support 79 |
Firefox
Full support 65 |
IE
No support No |
Opera
Full support 58 |
Safari
Full support 14 |
WebView Android
Full support 71 |
Chrome Android
Full support 71 |
Firefox Android
Full support 65 |
Opera Android
Full support 50 |
Safari iOS
Full support 14 |
Samsung Internet Android
Full support 10.0 |
nodejs Full support 12.0.0 Full support 12.0.0 Notes' Before version 13.0.0, only the locale data for |
RelativeTimeFormat() constructor
|
Chrome
Full support 71 |
Edge
Full support 79 |
Firefox
Full support 65 |
IE
No support No |
Opera
Full support 58 |
Safari
Full support 14 |
WebView Android
Full support 71 |
Chrome Android
Full support 71 |
Firefox Android
Full support 65 |
Opera Android
Full support 50 |
Safari iOS
Full support 14 |
Samsung Internet Android
Full support 10.0 |
nodejs Full support 13.0.0 Full support 13.0.0 Partial support 12.0.0 Notes' Before version 13.0.0, only the locale data for |
format
|
Chrome
Full support 71 |
Edge
Full support 79 |
Firefox
Full support 65 |
IE
No support No |
Opera
Full support 58 |
Safari
Full support 14 |
WebView Android
Full support 71 |
Chrome Android
Full support 71 |
Firefox Android
Full support 65 |
Opera Android
Full support 50 |
Safari iOS
Full support 14 |
Samsung Internet Android
Full support 10.0 |
nodejs Full support 12.0.0 Full support 12.0.0 Notes' Before version 13.0.0, only the locale data for |
formatToParts
|
Chrome
Full support 71 |
Edge
Full support 79 |
Firefox
Full support 70 |
IE
No support No |
Opera
Full support 58 |
Safari
Full support 14 |
WebView Android
Full support 71 |
Chrome Android
Full support 71 |
Firefox Android
No support No |
Opera Android
Full support 50 |
Safari iOS
Full support 14 |
Samsung Internet Android
Full support 10.0 |
nodejs Full support 12.0.0 Full support 12.0.0 Notes' Before version 13.0.0, only the locale data for |
resolvedOptions
|
Chrome
Full support 71 |
Edge
Full support 79 |
Firefox
Full support 65 |
IE
No support No |
Opera
Full support 58 |
Safari
Full support 14 |
WebView Android
Full support 71 |
Chrome Android
Full support 71 |
Firefox Android
Full support 65 |
Opera Android
Full support 50 |
Safari iOS
Full support 14 |
Samsung Internet Android
Full support 10.0 |
nodejs Full support 12.0.0 Full support 12.0.0 Notes' Before version 13.0.0, only the locale data for |
supportedLocalesOf
|
Chrome
Full support 71 |
Edge
Full support 79 |
Firefox
Full support 65 |
IE
No support No |
Opera
Full support 58 |
Safari
Full support 14 |
WebView Android
Full support 71 |
Chrome Android
Full support 71 |
Firefox Android
Full support 65 |
Opera Android
Full support 50 |
Safari iOS
Full support 14 |
Samsung Internet Android
Full support 10.0 |
nodejs Full support 13.0.0 Full support 13.0.0 Partial support 12.0.0 Notes' Before version 13.0.0, only the locale data for |
Legend
- Full support
- Full support
- No support
- No support
- See implementation notes.'
- See implementation notes.
See also
Intl.RelativeTimeFormat by Mozilla Contributors is licensed under CC-BY-SA 2.5.