Obiekt Date

JavaScript udostępnia nam konstruktor Date() który umożliwia nam w łatwy sposób przeprowadzać operacje związane z czasem.

const now = new Date();
console.dir(now);

Pamiętaj, że jest do data z urządzenia danego użytkownika, a nie serwera. Może ona być inna u różnych użytkowników.

Podstawowe metody za pomocą których możemy w łatwy sposób formatować wygląd daty (najczęściej używane):

getDate()
- zwraca dzień miesiąca (wartość z przedziału 1 - 31)

getDay()

- zwraca dzień tygodnia (0 dla niedzieli, 1 dla poniedziałku, 2 dla wtorku itd)

getYear()

- zwraca liczbę reprezentującą rok (dla lat 1900 - 1999 jest to 2-cyfrowa liczba np. 99, a dla późniejszych jest to liczba 4-cyfrowa np. 2002)

getFullYear()

- zwraca pełną liczbę reprezentującą rok (np. 1999 lub 2000)

getHours()

- zwraca aktualną godzinę (wartość z przedziału 0 - 23)

getMilliseconds()

- zwraca milisekundy (wartość z przedziału 0 - 999)

getMinutes()

- zwraca minuty (wartość z przedziału 0 - 59)

getMonth()

- zwraca aktualny miesiąc (0 - styczeń, 1 - luty itp.)

getSeconds()

- zwraca aktualną liczbę sekund (wartość z przedziału 0 - 59)

getTime()

- zwraca aktualny czas jako liczbę reprezentującą liczbę milisekund która upłynęła od godziny 00:00 1 stycznia 1970 roku

Wszystkie dostępne metody znajdziesz tutajarrow-up-right.

Przykładowe wyświetlenie godziny może mieć postać:

const now = new Date();
console.log(now.getHours());

Wypisywanie sformatowanej daty na ekran

Skorzystajmy z powyższych metod aby wypisać sformatowaną datę:

Jest teraz czas: 18:22:35 Dnia: 10.11.2025

Wszystko wygląda w miarę dobrze. Jednak wciąż możemy poprawić pewne szczegóły. Wartości reprezentujące dany czas - np. minuty, sekundy lub miesiące są przedstawiane jako jednocyfrowe liczby jeżeli ich wartość jest mniejsza od 10. Możemy to zrobić na minimum dwa sposoby:

Można też pokusić się o napisanie stosownej funkcji tagującej:

Ja pozostanę przy klasycznym podejściu...

Jest teraz czas: 18:22:35 Dnia: 10.11.2025

Dzień tygodnia

Aby wypisać dzień tygodnia musimy skorzystać z metody getDay().

Numer tygodni w postaci liczby nie wygląda zbyt elegancko. Aby to naprawić, możemy skorzystać z tablicy dni:

Dzisiaj jest dzień tygodnia: Poniedziałek

Dynamiczne wypisywanie czasu

Wiedząc już jak się wypisuje aktualną datę oraz aktualny dzień tygodnia możemy napisać skrypt, który będzie to robił dynamicznie za pomocą jednej z funkcji interwałów. Teoretycznie najlepszym sposobem do zastosowania tutaj interwału:

Nie jest to jedyna możliwość. Naszym celem jest aktualizowanie czasu co sekundę, ale nie znaczy to wcale, że powinniśmy daną funkcję odpalać z taką częstotliwością. O wiele lepszym rozwiązaniem będzie odpalanie jej tak często jak to możliwe, dzięki czemu będzie mniej prawdopodobne, że nasz zegarek będzie pokazywał czas możliwie precyzyjnie.

W naszym przypadku zastosujemy requestAnimationFrame, którą używaliśmy przy animacjach canvas. Funkcja ta służy do odpalania danej funkcji możliwe często - czyli co kolejne odmalowanie strony.

Powyższe podejście jest jednym z prostszych, ale równocześnie nie jest idealnearrow-up-right i nie nada się do każdego zastosowania. Zrobienie zegarka na stronie - jak najbardziej. Ale zrobienie serwisu aukcyjnego bazującego na takim prostym rozwiązaniu może nas później zaboleć w sądzie...

Dlatego właśnie przy bardziej skomplikowanych operacjach swego czasu używało się popularnej biblioteki moment.jsarrow-up-right. Używało, bo niedawno pojawił się manifest oznajmiający zbliżający się koniec tej biblioteki. Warto zerknąć, zwłaszcza, że zamieszczone są tam alternatywyarrow-up-right dla tej biblioteki.18:22:5710.11.2025 (Poniedziałek)

Tekst w zależności od czasu

Poznane powyżej metody można wykorzystać do wypisywania odpowiedniej treści w zależności od aktualnego czasu. Wystarczy sprawdzić aktualny znacznik czasu (dni, godziny, minuty itp.) i w zależności od jego wartości wypisywać odpowiednią treść. Poniższy skrypt przedstawia przykładowe zastosowanie tej metody:

Ustawianie Daty i Czasu - metoda 1

W powyższych skryptach za pomocą odpowiednich metod pobieraliśmy aktualną datę i czas. JavaScript udostępnia nam także zestaw metod, za pomocą których możemy ustawiać czas i datę.

Ustawienie takie nie wpływa w żaden sposób na systemowy zegar i kalendarz - działa ono tylko w obrębie skryptu JavaScript.

Aby ustawić datę i czas możemy skorzystać z dwóch sposobów.

Pierwszym z nich polega na podaniu w nawiasach obiektu Date() poszczególnych składowych czasu. Kolejność wprowadzanych danych to: rok, miesiąc, dzień, godzina , minuta, sekunda, milisekunda, przy czym nie musimy podawać wszystkich składowych.

ustawi nam datę obiektu dzisiaj na:

  • rok - 2008,

  • miesiąc - 4 (maj) - bo liczymy od 0,

  • dzień - 12,

  • godzina - 15,

  • minuta - 24,

  • sekunda - 18

Po ustawieniu tak daty, możemy na tej zmiennej działać tak samo jak to robiliśmy powyżej.

Ustawianie Daty i Czasu - metoda 2

Drugim sposobem ustawiania czasu i daty jest zastosowanie odpowiednich metod:

setYear() - ustawia dwie ostatnie cyfry roku, setMonth() - ustawia miesiąc, setDate() - ustawia dzień miesiąca, setHours() - ustawia godzinę, setMinutes() - ustawia minuty, setSeconds() - ustawia sekundy, setMilliseconds() - ustawia milisekundy.

Każda metoda ustawia tylko jeden element obiektu Date. Poza tymi metodami istnieją jeszcze dodatkowe metody do ustawiania czasuarrow-up-right.

Odliczanie

Spróbujmy napisać skrypt, który będzie odliczał dni do jakiegoś wydarzenia.

Na początku przeanalizujmy problem.

Aby zrobić takie odliczanie, musimy obliczyć różnicę między datą z przyszłości a datą teraźniejszą. Pobieramy więc oba czasy (w ms), a następnie odejmujemy od siebie. Uzyskany wynik otrzymujemy w ms. Nas jednak interesuje liczba dni. Dzielimy więc wynik przez liczbę ms w dniu (czyli 24*60*60*1000). Dzięki temu uzyskujemy liczbę oznaczającą liczbę dni+resztę. Aby wydobyć tą resztę, musimy od wyniku odjąć zaokrąglony wynik. Mając resztę możemy w podobny sposób obliczyć liczbę godzin, minut i sekund - wciąż posługując się podobną techniką.

Last updated