JavaScript dla każdego
//  wróć   główna   dalej  //

Data i czas

new Date() getDate() getMonth() getYear() getDay() getHours() getMinutes() getSeconds() write() setDate() setMonth() setYear() setHours() setMinutes() setSeconds() setTimeout()

JavaScript umożliwia sprawdzenie aktualnego czasu i daty. Aktualny, czyli systemowy. Każdy element czasu i daty jest pobierany przez inną metodę.

getDate() zwraca dzień miesiąca,
getMonth() zwraca miesiąc, przy czym styczeń to 0, luty 1 itd.
getYear() zwraca dwie ostatnie cyfry roku,
getHours() zwraca godzinę,
getMinutes() zwraca minuty, jeżeli jest ona mniejsza od 10, to nie zwraca 07 sekund, ale 7.
getSeconds() zwraca sekundy, podobnie jak minuty.
getDay() zwraca aktualny dzień tygodnia, przy czym 0 oznacza Niedzielę, a 1 poniedziałek.

Aby skrypt wprowadził na stronę podczas ładowania aktualny czas, należy wprowadzić np. taki kod na stronie:

dzisiaj=new Date();
document.write("Godzina: "+dzisiaj.getHours()+":"+dzisiaj.getMinutes()+"<BR>" )
document.write("Data: "
+dzisiaj.getDate()+"."+(dzisiaj.getMonth()+1)+"."+dzisiaj.getYear()+"<BR>")

Obiekt dzisiaj należy zdefiniować jako typ zmiennej new Date(), zawiera wszystkie informacje o dacie i czasie. Instrukcja document.write() spowoduje wypisane zawartości na ekranie przeglądarki. Między kolejnymi instrukcjami należy dać znak plusa, aby łańcuchy zostały wydrukowane poprawnie (więcej I>>).


Jest to tak naprawdę czas, w którym strona została załadowana do przeglądarki, bo w takiej formie, dane te nie są aktualizowane. Aby to uczynić, należy stworzyć lepszy przykład, jak niżej.

Można także przy pomocy jednej instrukcji pobrać aktualną datę lub czas:

teraz=new Date().getHour

W ten sposób bez pomocniczego obiektu, zawierającego datę i czas, można pobrać konkretną wartość.

Dla bardziej wymagających przedstawię pobieranie daty i czasu bez przerwy, dane będą stale odświeżane. Dane muszą być umieszczone w funkcji, by mogły być stale uaktualniane. W bloku HEAD należy umieścić taki skrypt:

function zegar() {
teraz=new Date();
godzina=teraz.getHours();
minuta=teraz.getMinutes();
sekunda=teraz.getSeconds();
czas=godzina+":"+minuta+":"+sekunda;
document.zegar.czas.value=czas; // aktualizuje czas w polu formularza

dzien=teraz.getDate();
miesiac=teraz.getMonth()+1;
rok=1900+teraz.getYear();
data=dzien+"."+miesiac+"."+rok;
document.zegar.data.value=data; // aktualizuje czas w polu formularza
setTimeout("zegar()",1000);} // po sekundzie wywołaj ponownie funkcję

Należy jeszcze wywołać funkcję z tagu <BODY>, by była wykonywana automatycznie zaraz po załadowaniu strony.

<BODY onLoad="zegar()">

Ważny jest jeszcze formularz, gdzie dane mają być wyświetlane:

<FORM NAME="zegar">
Czas: <INPUT TYPE=Text NAME="czas">
Data: <INPUT TYPE=Text NAME="data">
</FORM>

Czas:
Data:
Zobacz przykład

setTimeout pozwala na wielowątkowe wykonywanie programu. W przeciwieństwie do znanego z innych języków delay() nie zatrzymuje działania programu na określony czas, a jedynie wykonuje instrukcje (zwykle wywołanie nowej funkcji) po określonym czasie. W powyższym przykładzie funkcja zegar zakończy się (toteż stos nie zostanie przepełniony), po czym po jednej sekundzie zostanie ponownie zainicjalizowana, niezależnie od tego, czy inna funkcja byłaby aktualnie wykonywana.

Takie rozwiązanie ma zasadniczą zaletę, możemy zainicjować dowolną ilość funkcji, które będą działały równolegle. Można np. pokazywać aktualny czas co sekundę i jednocześnie zwiększać co milisekundę wartość pewnej zmiennej. Wadą takiego rozwiązania jest fakt, że nie można w ten sposób zatrzymać programu na określony czas, bo program zapamięta, że należy za sekundę zainicjować działanie zmiennej, ale instrukcję, które znajdują się poniżej zostaną wykonane. Jeśli chcemy zatrzymać program, należy stworzyć nową funkcję, w której należy umieścić resztę instrukcji, a następnie funkcję tę po określonym czasie wywołać.

JavaScript umożliwia także ustawianie daty w zdefiniowanym obiekcie i godziny. Zmiana jest dostępna w obrębie języka JavaScript.

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

Każda metoda ustawia w obiekcie zawierającym datę, tylko jeden element. Ustawiając dzień miesiąca, nie zmieniamy numeru miesiąca. Metoda getDay() nie ma swojego odpowiednika, bo jest ustalana na podstawie daty.

Można też zmienić wszystkie dane na raz:

dzisiaj = new Date(95,4,12,15,24,15)

W tym przypadku data zostanie pobrana wg podanych danych, nie z czasu systemowego. Kolejne liczby odpowiadają wartościom: roku, miesiąca, dnia, godziny, minuty, sekundy. Aby odczytać odpowiednie wartości, należy posłużyć się instrukcjami z pierwszej części.

A poniżej metoda zwracająca zmieniony dzień systemowy. Metody ustawiające datę i czas muszą mieć argumenty, podobnie jak metody ww. Wartość Zmienna będzie równa jeden. Pozostałe wartości godziny i daty obiektu Teraz pozostają wartościami systemowymi.

Teraz=new Date();
Zmienna=Teraz.getDate(Teraz.setDate(1))

Do góry