The Intl.RelativeTimeFormat()
constructor creates Intl.RelativeTimeFormat
objects.
Intl.RelativeTimeFormat() constructor
Syntax
new Intl.RelativeTimeFormat() new Intl.RelativeTimeFormat(locales) 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:
-
localeMatcher
-
The locale matching algorithm to use. Possible values are "
lookup
" and "best fit
"; the default is "best fit
". For information about this option, see the Intl page. -
numeric
-
The format of output message. Possible values are:
- "
always
" (default, e.g.,1 day ago
), - or "
auto
" (e.g.,yesterday
). The "auto
" value allows to not always have to use numeric values in the output.
- "
-
style
-
The length of the internationalized message. Possible values are:
- "
long
" (default, e.g.,in 1 month
) - "
short
" (e.g.,in 1 mo.
), - or "
narrow
" (e.g.,in 1 mo.
). The narrow style could be similar to the short style for some locales.
- "
-
Examples
Basic format usage
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"
Using the auto option
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"
Specifications
Specification |
---|
ECMAScript Internationalization API Specification # sec-intl-relativetimeformat-constructor |
Browser compatibility
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | Deno | Node.js | |
RelativeTimeFormat |
71
|
79
|
65
|
No
|
58
|
14
|
71
|
71
|
65
|
50
|
14
|
10.0
|
1.8
|
13.0.0
12.0.0
Before version 13.0.0, only the locale data for
en-US is available by default. When other locales are specified, the
RelativeTimeFormat instance silently falls back to
en-US . To make full ICU (locale) data available before version 13, see
Node.js documentation on the --with-intl option and how to provide the data.
|
See also
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat