Intl.RelativeTimeFormat

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.

El objeto Intl.RelativeTimeFormat te proporciona una manera de formatear tiempos relativos con traducciones.

Pruébalo

const rtf1 = new Intl.RelativeTimeFormat("en", { style: "short" });

console.log(rtf1.format(3, "quarter"));
// Expected output: "in 3 qtrs."

console.log(rtf1.format(-1, "day"));
// Expected output: "1 day ago"

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

console.log(rtf2.format(2, "day"));
// Expected output: "pasado mañana"

El código de este ejemplo interactivo está disponible en un repositorio GitHub. Si quieres contribuir a los ejemplos interactivos del proyecto, por favor, clona https://github.com/mdn/interactive-examples y manda una Pull Request.

Constructor

Intl.RelativeTimeFormat.RelativeTimeFormat()

Crea una nueva instancia de Intl.RelativeTimeFormat.

Métodos estáticos

Intl.RelativeTimeFormat.supportedLocalesOf()

Devuelve un Array con todos los idiomas disponibles sin necesidad de usar el que hay por defecto.

Métodos de instancia

Intl.RelativeTimeFormat.prototype.format()

Formatea value y unit conforme al idioma y las opciones de formateo al crear la instancia con Intl.RelativeTimeFormat.

Intl.RelativeTimeFormat.prototype.formatToParts()

Devuelve un Array de objetos representando el tiempo relativo en partes que pueden ser usadas en traducciones.

Intl.RelativeTimeFormat.prototype.resolvedOptions()

Devuelve un nuevo objeto con las propiedades que reflejan las opciones de localización y formato usadas durante la inicialización del objeto.

Ejemplos

Ejemplo básico

El siguiente ejemplo muestra cómo conseguir el tiempo relativo para el mejor idioma según el usuario.

js
// Crea un formateador de tiempo relativo en tu lenguaje
// con los valores por defectos pasados expresamente.
const rtf = new Intl.RelativeTimeFormat("en", {
  localeMatcher: "best fit", // otros valores: "lookup"
  numeric: "always", // otros valores: "auto"
  style: "long", // otros valores: "short" or "narrow"
});

// Formatea el tiempo relativo con valores negativos (-1).
rtf.format(-1, "day");
// > "Hace 1 día"

// Formatea el tiempo relativo con valores positivos (1).
rtf.format(1, "day");
// > "Dentro de 1 día"

Usando formatToParts

El siguiente ejemplo muestra cómo crear un formateador de tiempo relativo que devuelve las partes separadas:

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

// Formatea el tiempo relativo usando día como unidad.
rtf.formatToParts(-1, "day");
// > [{ type: "literal", value: "ayer"}]

rtf.formatToParts(100, "day");
// > [{ type: "literal", value: "Dentro de " },
// >  { type: "integer", value: "100", unit: "day" },
// >  { type: "literal", value: " días" }]

Especificaciones

Specification
ECMAScript® 2025 Internationalization API Specification
# relativetimeformat-objects

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
RelativeTimeFormat
RelativeTimeFormat() constructor
locales parameter
format
formatToParts
resolvedOptions
supportedLocalesOf

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
See implementation notes.
Has more compatibility info.

Ver también