Ce face Intl.DurationFormat
format primește un obiect cu oricare dintre câmpurile years, months, weeks, days, hours, minutes, seconds, milliseconds (și mai mici). Câmpurile lipsă sau zero nu sunt afișate.
Opțiunea style alege forma: "long" (2 ore, 5 minute, 30 de secunde), "short" (implicit), "narrow" sau "digital" (2:05:00). formatToParts returnează bucățile.
Parametri
| Parametru | Descriere |
|---|---|
limba |
Opțional. Codul limbii. |
optiuni |
Opțional. style și stilul fiecărei unități. |
Ce returnează
Un obiect formator.
Exemple
Exemplul 1: Durata unui film în mai multe stiluri
const durata = { hours: 2, minutes: 5, seconds: 30 };
for (const style of ["long", "short", "narrow", "digital"]) {
console.log(style.padEnd(8), new Intl.DurationFormat("ro", { style }).format(durata));
}
Rezultat
long 2 ore, 5 minute, 30 de secunde
short 2 ore, 5 min., 30 s
narrow 2 h, 5 m, 30 s
digital 2:05:30
Exemplul 2: Din secunde într-o durată
function dinSecunde(total) {
return { hours: Math.floor(total / 3600), minutes: Math.floor((total % 3600) / 60), seconds: total % 60 };
}
const df = new Intl.DurationFormat("ro", { style: "long" });
console.log(df.format(dinSecunde(3725)));
console.log(df.formatToParts({ minutes: 1 }).map((p) => p.value).join(""));
console.log(df.resolvedOptions().style, Intl.DurationFormat.supportedLocalesOf("ro"));
Rezultat
1 oră, 2 minute, 5 secunde
1 minut
long [ 'ro' ]
Greșeli frecvente
- Dai numărul total de secunde (
{ seconds: 3725 }) și primești „3.725 de secunde”. Formatorul nu convertește unitățile; împarte tu durata în ore, minute și secunde.
Comenzi înrudite
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.).getTime / setTime / valueOf: Citește sau setează momentul ca număr de milisecunde de la 1 ianuarie 1970 UTC.