Porównanie czasu w JavaScript

Dawno nic nie pisałem, więc dzisiaj postanowiłem, że będzie krótki poradnik. Chciałbym dzisiaj opisać temat zarządzania czasem, a konkretniej, sprawdzić czy obecna godzina jest z podanego przedziału. Można to wykorzystać np. do pokazania na stronie czy sklep jest jeszcze otwarty. Zaczynamy.

Porównanie czasu w javaScript

Przykład

Zaczynamy od razu od konkretnego przykładu. Dany sklep jest otwarty w godzinach 9:00 – 17:00. Naszym zadaniem będzie pokazać użytkownikowi, czy sklep jest jeszcze otwarty, czy już zamknięty.

Oczywiście nie uwzględniamy w tym przykładzie dnia tygodnia, skupiamy się tylko na zakresie godzinowym.

dark

Wyjaśnienie

Zaczynamy od napisania funkcji 'compareTime()’ z dwoma parametrami określającymi godzinę otwarcia i godzinę zamknięcia. Pobieramy bieżący czas, a następnie rozbijamy oba parametry po dwukropku, by uzyskać godziny i minuty. Będzie to nam potrzebne do funkcji (wbudowanej JS) 'setHours()’, która przyjmuje parametry kolejno: godzina, minuta, sekunda, milisekunda. Nas interesują tylko pierwsze dwa parametry, zaś sekundę zerujemy. Co otrzymamy z tej funkcji? Liczbę milisekund od północy 1 stycznia 1970 w strefie czasowej południka zerowego.

Na koniec funkcji 'compareTime()’ porównujemy bieżący czas, czy jest większy od godziny otwarcia i zarazem mniejszy od godziny zamknięcia. Tutaj ważne, aby użyć operatora '&&’. Zwracamy wartość boolean (true/false) i gotowe.

Podsumowanie

Powyższy przykład oczywiście można zapisać krócej lub do rozwiązania użyć zewnętrznej biblioteki 'moment.js’ (jest bardzo przydatna przy większej ilości operacji na dacie i czasie), jednak chciałem pokazać jak to działa „od kuchni”, możliwie prostym sposobem. Mam nadzieję, że komuś się przyda to rozwiązanie jako baza rozwojowa.