Wątek przeniesiony 2023-09-11 17:03 z JavaScript przez Riddle.

Timer do zliczania czasu rozpoczynający się od wyznaczonej godziny

0

Jaki rekomendujecie sposób na stworzenie timera do zliczania czasu rozpoczynający się od wyznaczonej godziny np. klikam przycisk start o godzinie 15.05 i wtedy widzę na bieżąco timer w którym zmieniają się minuty i sekundy. Czy w takim przypadku należy ustawić setInterval co 1 sek ? Czy istnieje jakiś sposób aby to zrobić bez używania setIntervala ?

0
mielony711 napisał(a):

Jaki rekomendujecie sposób na stworzenie timera do zliczania czasu rozpoczynający się od wyznaczonej godziny np. klikam przycisk start o godzinie 15.05 i wtedy widzę na bieżąco timer w którym zmieniają się minuty i sekundy. Czy w takim przypadku należy ustawić setInterval co 1 sek ? Czy istnieje jakiś sposób aby to zrobić bez używania setIntervala ?

Najlepiej odczytać czas systemowy.

0

Zapisz tylko datę naciśnięcia przycisku i oblicz ile minęło minut i sekund od kliknięcia.
setInterval nie musi być wtedy ustawiony na 1 sekundę, tylko na taką wartość jak często chcesz odświeżyć informację na stronie. Poleganie na setInterval nie będzie działało po pierwsze dlatego że czas podany to nie jest gwarantowany czas tylko minimalny czas po jakim ma się uruchomić timer, po drugie przeglądarki teraz usypiają nieużywane karty więc po pewnym czasie po prostu przestanie liczyć aż nie wrócisz do tej zakładki

0

Czy w takim przypadku należy ustawić setInterval co 1 sek ?

Nie licz czasu za pomocą intervala, bo może ci się rozjechać. Tzn. możesz użyć intervala do tego, żeby aktualizować tekst na ekranie, ale lepiej nie opierać się na nim do liczenia czasu, tylko użyć obiektu Date.

Np.

const startDate = new Date();


setInterval(() => {
   const currentDate = new Date();
   document.body.innerHTML = (currentDate - startDate) / 1000;
}, 123);

https://jsfiddle.net/61oLya4f/

Zamiast 123 możesz cokolwiek wpisać, nie będzie mieć to wpływ na liczenie czasu. To tylko kiedy się ma odpalić kod aktualizujący widok.

1 użytkowników online, w tym zalogowanych: 0, gości: 1