Ce face Intl.RelativeTimeFormat
format(valoare, unitate) returnează textul pentru o valoare negativă (trecut) sau pozitivă (viitor). Unități: "second", "minute", "hour", "day", "week", "month", "quarter", "year".
Cu { numeric: "auto" } primești expresii ca „ieri” și „mâine” în loc de „acum 1 zi”. formatToParts returnează bucățile, iar resolvedOptions și supportedLocalesOf funcționează ca la celelalte formatoare. Alegerea unității potrivite (minute, ore, zile) rămâne în grija ta.
Parametri
| Parametru | Descriere |
|---|---|
valoare |
Numărul de unități; negativ pentru trecut. |
unitate |
Unitatea de timp, la singular sau plural ("day" sau "days"). |
Ce returnează
Un obiect formator.
Exemple
Exemplul 1: Trecut și viitor
const rtf = new Intl.RelativeTimeFormat("ro");
const auto = new Intl.RelativeTimeFormat("ro", { numeric: "auto" });
console.log(rtf.format(-3, "day"), "|", rtf.format(2, "hour"), "|", rtf.format(-1, "day"));
console.log(auto.format(-1, "day"), "|", auto.format(1, "day"), "|", auto.format(0, "year"));
console.log(rtf.formatToParts(5, "minute"));
Rezultat
acum 3 zile | peste 2 ore | acum 1 zi
ieri | mâine | anul acesta
[
{ type: 'literal', value: 'peste ' },
{ type: 'integer', value: '5', unit: 'minute' },
{ type: 'literal', value: ' minute' }
]
Exemplul 2: „Publicat acum…” pentru un articol
const rtf = new Intl.RelativeTimeFormat("ro", { numeric: "auto" });
const UNITATI = [["year", 31536000], ["month", 2592000], ["day", 86400], ["hour", 3600], ["minute", 60]];
function relativ(data, acum) {
const secunde = (data - acum) / 1000;
for (const [unitate, s] of UNITATI) {
if (Math.abs(secunde) >= s) return rtf.format(Math.round(secunde / s), unitate);
}
return rtf.format(Math.round(secunde), "second");
}
const acum = new Date(2026, 9, 19, 12, 0);
console.log(relativ(new Date(2026, 9, 19, 11, 15), acum));
console.log(relativ(new Date(2026, 9, 16, 12, 0), acum));
console.log(relativ(new Date(2025, 9, 1), acum));
console.log(rtf.resolvedOptions().numeric, Intl.RelativeTimeFormat.supportedLocalesOf(["ro"]));
Rezultat
acum 45 de minute
acum 3 zile
anul trecut
auto [ 'ro' ]
Greșeli frecvente
- Dai unitatea greșit scrisă (
"zi","days ago") și primeștiRangeError: Invalid unit argument. Unitățile sunt în engleză.
Comenzi înrudite
Intl.DateTimeFormat: Un formator de date și ore după regulile unei limbi, refolosibil pentru multe date.getTime / setTime / valueOf: Citește sau setează momentul ca număr de milisecunde de la 1 ianuarie 1970 UTC.Intl.DurationFormat: Formatează o durată (ore, minute, secunde) după regulile unei limbi: „2 ore și 5 minute”.