Date

Obiekt reprezentujący konkretny moment w czasie, z metodami do odczytu i zmiany daty oraz godziny.

Zwraca
Nowy obiekt Date.
Na tej stronie

Przykład

#
JavaScript
const exam = new Date(Date.UTC(2026, 8, 28, 10, 30))

console.log(exam)
console.log(exam.getUTCFullYear(), exam.getUTCMonth(), exam.getUTCDate())
console.log(exam.getUTCDay(), exam.getUTCHours())
Konsola
2026-09-28T10:30:00.000Z
2026 8 28
1 10

Miesiąc 8 to wrzesień, bo miesiące liczy się od zera. Dzień tygodnia 1 oznacza poniedziałek (niedziela to 0).

Definicja i zastosowanie

#

Obiekt Date przechowuje jeden punkt w czasie jako liczbę milisekund, które upłynęły od 1 stycznia 1970 roku (UTC). new Date() bez argumentów zwraca bieżący moment, a Date.now() samą liczbę milisekund, wygodną do mierzenia czasu.

Datę utworzysz z liczby milisekund, z napisu w formacie ISO ("2026-09-28T10:30:00Z") albo z osobnych składników: new Date(rok, miesiąc, dzień, godzina, minuta). Uwaga: miesiące liczone są od zera, więc styczeń to 0, a grudzień to 11.

Metody getFullYear(), getMonth(), getDate(), getDay() czy getHours() zwracają składniki w strefie czasowej użytkownika, a ich odpowiedniki z UTC w nazwie, np. getUTCHours(), w czasie uniwersalnym. Do wyświetlania dat w czytelnej, polskiej formie użyj toLocaleDateString() albo Intl.DateTimeFormat.

Obiekty Date są zmienne: metody set...() modyfikują istniejący obiekt. Różnicę między datami policzysz, odejmując je od siebie, bo wynikiem jest liczba milisekund.

Składnia

#
Składnia
new Date()
new Date(milliseconds)
new Date(dateString)
new Date(year, monthIndex, day, hours, minutes, seconds)

Date.now()
Date.UTC(year, monthIndex, day, hours, minutes)

Parametry

#
  • milliseconds

    liczba

    Liczba milisekund od 1 stycznia 1970 roku (UTC).
  • dateString

    napis

    Data w formacie ISO, np. "2026-09-28" albo "2026-09-28T10:30:00Z".
  • year, monthIndex, day…

    liczby

    Składniki daty w lokalnej strefie czasowej. monthIndex przyjmuje wartości od 0 (styczeń) do 11 (grudzień).

Więcej przykładów

#
Miesiące liczone od zera
JavaScript
const start = new Date(2026, 0, 1)
const oops = new Date(2026, 1, 1)

console.log(start.getMonth(), start.getDate())
console.log(oops.toLocaleDateString('pl-PL', { month: 'long' }))
Konsola
0 1
luty
Różnica między datami w dniach
JavaScript
const start = new Date('2026-09-01T00:00:00Z')
const end = new Date('2026-09-28T00:00:00Z')

const days = (end - start) / (1000 * 60 * 60 * 24)
console.log(days)
Konsola
27
Termin za tydzień
JavaScript
const deadline = new Date(Date.UTC(2026, 8, 28))
deadline.setUTCDate(deadline.getUTCDate() + 7)

console.log(deadline)
Konsola
2026-10-05T00:00:00.000Z

Metody set...() same przenoszą nadmiar dni na kolejny miesiąc, więc 28 września plus 7 dni daje 5 października.

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

#
  • Pamiętaj, że miesiące liczą się od zera: new Date(2026, 0, 1) to 1 stycznia, a nie 1 lutego.
  • Daty zapisuj i przesyłaj w formacie ISO (toISOString()), a na lokalny zapis zamieniaj dopiero przy wyświetlaniu.
  • Napis z samą datą, np. "2026-09-28", jest traktowany jako czas UTC, a napis z godziną bez Z na końcu jako czas lokalny. To częsta przyczyna przesunięć o kilka godzin.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.