Intl. DateTimeFormat
Formatuje daty i godziny zgodnie z zasadami wybranego języka i strefy czasowej.
- Zwraca
- Obiekt formatera z metodami
format(),formatToParts()iformatRange().
Przykład
#const lesson = new Date(Date.UTC(2026, 8, 28, 10, 30))
const full = new Intl.DateTimeFormat('pl-PL', { dateStyle: 'full', timeZone: 'UTC' })
const short = new Intl.DateTimeFormat('pl-PL', { dateStyle: 'short', timeZone: 'UTC' })
console.log(full.format(lesson))
console.log(short.format(lesson))Definicja i zastosowanie
#Intl.DateTimeFormat zamienia obiekt Date na czytelny tekst, na przykład „poniedziałek, 28 września 2026” albo „28.09.2026”. Sam dobiera nazwy miesięcy i dni tygodnia w wybranym języku, ich poprawną odmianę oraz kolejność składników.
Najprościej użyć opcji dateStyle i timeStyle z wartościami "full", "long", "medium" lub "short". Gdy potrzebujesz większej kontroli, podaj pojedyncze składniki: weekday, year, month, day, hour, minute. Nie można ich łączyć z dateStyle ani timeStyle.
Opcja timeZone określa strefę czasową, w której ma być pokazana data, np. "Europe/Warsaw" albo "UTC". Bez niej formater używa strefy użytkownika, więc ta sama chwila wyświetli się inaczej w Polsce, a inaczej w Japonii. Przykłady na tej stronie podają strefę jawnie, żeby wynik był zawsze taki sam.
Składnia
#new Intl.DateTimeFormat(locales)
new Intl.DateTimeFormat(locales, options)
formatter.format(date)Parametry
#locales
opcjonalny, napis lub tablica
Kod języka, np."pl-PL"albo"en-US". Pominięty oznacza język przeglądarki.options
opcjonalny obiekt
Ustawienia, m.in.dateStyle,timeStyle,weekday,year,month,day,hour,minuteitimeZone.
Więcej przykładów
#const liveLesson = new Date(Date.UTC(2026, 8, 28, 10, 30))
const zones = ['Europe/Warsaw', 'Asia/Tokyo', 'America/New_York']
for (const timeZone of zones) {
const time = new Intl.DateTimeFormat('pl-PL', { timeStyle: 'short', timeZone }).format(liveLesson)
console.log(`${timeZone}: ${time}`)
}const date = new Date(Date.UTC(2026, 8, 28, 10, 30))
const weekday = new Intl.DateTimeFormat('pl-PL', { weekday: 'long', timeZone: 'UTC' })
const dayMonth = new Intl.DateTimeFormat('pl-PL', { day: 'numeric', month: 'long', timeZone: 'UTC' })
const time = new Intl.DateTimeFormat('pl-PL', { hour: '2-digit', minute: '2-digit', timeZone: 'UTC' })
console.log(weekday.format(date))
console.log(dayMonth.format(date))
console.log(time.format(date))const date = new Date(Date.UTC(2026, 8, 28))
const options = { dateStyle: 'full', timeZone: 'UTC' }
console.log(new Intl.DateTimeFormat('en-US', options).format(date))
console.log(new Intl.DateTimeFormat('de-DE', options).format(date))Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Jeśli wszyscy użytkownicy mają widzieć tę samą godzinę (np. termin wydarzenia w Polsce), podaj
timeZone: "Europe/Warsaw". - Formater twórz raz i używaj wielokrotnie, np. przy wyświetlaniu listy wiadomości z datami.
- Do zapisu typu „wczoraj” albo „za 3 dni” służy pokrewny
Intl.RelativeTimeFormat.
Powiązane hasła
#- DateObiekt reprezentujący konkretny moment w czasie, z metodami do odczytu i zmiany daty oraz godziny.
- Intl.NumberFormatFormatuje liczby zgodnie z zasadami danego języka: separatory, waluty, procenty i jednostki.
- String.prototype.localeCompare()Porównuje dwa napisy według reguł języka. Zwraca liczbę ujemną, zero lub dodatnią, idealną do sortowania.
- Intl.RelativeTimeFormatFormatuje czas względny w wybranym języku, np. „za 3 dni”, „2 godziny temu” albo „wczoraj”.
Widzisz błąd albo brakuje przykładu? Napisz do nas.