Ce face Intl.DateTimeFormat
Creezi formatorul o dată, cu limba și opțiunile (aceleași ca la toLocaleDateString), apoi îl folosești pentru oricâte date. format(data) returnează textul.
formatToParts returnează bucățile rezultatului ({ type: "day", value: "19" } etc.), utile pentru a stiliza separat ziua sau luna. formatRange formatează un interval fără să repete ce este comun, iar formatRangeToParts îl returnează pe bucăți.
resolvedOptions() arată opțiunile efective (inclusiv fusul orar al vizitatorului), iar metoda statică supportedLocalesOf spune ce limbi din cele cerute sunt disponibile. Exemplele de pe această pagină au rulat cu fusul orar al României (Europe/Bucharest); pe alt calculator, orele locale pot diferi.
Parametri
| Parametru | Descriere |
|---|---|
limba |
Opțional. Codul limbii sau un tablou de coduri, în ordinea preferinței. |
optiuni |
Opțional. dateStyle, timeStyle, weekday, day, month, year, hour, minute, timeZone, hour12… |
Ce returnează
Un obiect formator.
Exemple
Exemplul 1: Un formator refolosit
const f = new Intl.DateTimeFormat("ro-RO", { day: "numeric", month: "long", year: "numeric" });
const date = [new Date(2026, 0, 1), new Date(2026, 4, 9), new Date(2026, 11, 24)];
console.log(date.map((d) => f.format(d)));
Rezultat
[ '1 ianuarie 2026', '9 mai 2026', '24 decembrie 2026' ]
Exemplul 2: Intervale și bucăți
const f = new Intl.DateTimeFormat("ro-RO", { day: "numeric", month: "long", year: "numeric" });
console.log(f.formatRange(new Date(2026, 6, 1), new Date(2026, 6, 14)));
console.log(f.formatRange(new Date(2026, 6, 28), new Date(2026, 7, 3)));
console.log(f.formatToParts(new Date(2026, 9, 19)).filter((p) => p.type !== "literal"));
console.log(f.formatRangeToParts(new Date(2026, 6, 1), new Date(2026, 6, 3)).map((p) => p.source).join(","));
Rezultat
1–14 iulie 2026
28 iulie – 3 august 2026
[
{ type: 'day', value: '19' },
{ type: 'month', value: 'octombrie' },
{ type: 'year', value: '2026' }
]
startRange,shared,endRange,shared,shared,shared,shared
Exemplul 3: Opțiunile efective și limbile disponibile
const f = new Intl.DateTimeFormat("ro-RO");
const o = f.resolvedOptions();
console.log(o.locale, o.calendar, o.timeZone);
console.log(Intl.DateTimeFormat.supportedLocalesOf(["ro", "xx", "de-AT"]));
Rezultat
ro-RO gregory Europe/Bucharest
[ 'ro', 'de-AT' ]
Greșeli frecvente
- Creezi un formator nou pentru fiecare dată dintr-o listă mare. Crearea este relativ lentă; creează-l o dată, în afara buclei.
Comenzi înrudite
toLocaleDateString / toLocaleString / toLocaleTimeString: Afișează data și ora după obiceiurile unei țări, de exemplu în română: „luni, 19 octombrie 2026”.Intl.RelativeTimeFormat: Formatează timpul relativ: „acum 3 zile”, „peste 2 ore”, „ieri”, „mâine”.Intl.NumberFormat: Formatează numere după regulile unei limbi: monedă, procente, unități, forme compacte (1,2 mil.).