Intl.DurationFormat jest teraz dostępny jako domyślny

Data publikacji: 20 marca 2025 r.

Typową informacją, którą możesz zobaczyć na stronie internetowej, jest tekst informujący, ile czasu zostało do określonego zdarzenia lub ile czasu upłynęło od jego wystąpienia. Jest on zwykle reprezentowany jako ciąg znaków, który określa czas w godzinach, minutach, sekundach lub innych przydatnych jednostkach czasu.

Intl.DurationFormat to przydatna funkcja, która robi to w Twoim imieniu w przeglądarce, uwzględniając wszelkie potrzeby związane z międzynarodowością, bez konieczności korzystania z dodatkowego kodu JavaScript. Od marca 2025 r. jest ona dostępna jako nowa wartość domyślna.

Jak działa Intl.DurationFormat

Intl.DurationFormat to klasa, która po uruchomieniu zwraca ciąg tekstowy opisujący czas trwania. Pole to działa w ten sposób, że określa obiekt zawierający klucze i wartości odpowiadające jednostkom czasu, dla których ma być generowany ciąg znaków:

// Specify the duration:
const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 yr, 20 hr, 15 min, 35 sec'
new Intl.DurationFormat('en').format(duration);

Aby zwrócić ciąg w długim formacie, w drugim argumencie konstruktora podaj wartość 'long' dla opcji style:

const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 year, 20 hours, 15 minutes, 35 seconds'
new Intl.DurationFormat('en', { style: 'long' }).format(duration);

Do tej pory przykłady generowały ciągi znaków w języku angielskim. Ta funkcja jest przeznaczona do międzynarodowego formatowania. Dzięki niej możesz podać dowolną prawidłową lokalizację i uzyskać ciągi tekstowe sformatowane w dowolnym obsługiwanym języku:

const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 Jahr, 20 Stunden, 15 Minuten und 35 Sekunden'
new Intl.DurationFormat('de', { style: 'long' }).format(duration);

// Output: '1 año, 20 horas, 15 minutos y 35 segundos'
new Intl.DurationFormat('es', { style: 'long' }).format(duration);

// Output: '1年20小时15分钟35秒钟'
new Intl.DurationFormat('zh', { style: 'long' }).format(duration);

// Output: '1 år, 20 timer, 15 minutter og 35 sekunder'
new Intl.DurationFormat('no', { style: 'long' }).format(duration);

// Output: 'mwaka 1, saa 20, dakika 15 na sekunde 35'
new Intl.DurationFormat('sw', { style: 'long' }).format(duration);

Te przykłady to tylko namiastka tego, co możesz zrobić dzięki tej nowej funkcji. Więcej informacji o możliwościach tej funkcji znajdziesz w dokumentacji Intl.DurationFormat na stronie MDN.