Autor Zpráva
Hoonzooid
Profil *
Zdravím,

potřeboval bych skript v Javascriptu, který mi vypočítá a každou vteřinu zobrazí zbývající čas do konce. Můj skript vypadá takto:

function showtime(countdown) {
   var now = new Date(); 
   var endDay = new Date(countdown);

   msPerDay = 24 * 60 * 60 * 1000;
   timeLeft = (endDay.getTime() - now.getTime());
   e_daysLeft = timeLeft / msPerDay;
   daysLeft = Math.floor(e_daysLeft);
   e_daysLeft = timeLeft / msPerDay;
   daysLeft = Math.floor(e_daysLeft);
   e_hrsLeft = (e_daysLeft - daysLeft)*24;
   hrsLeft = Math.floor(e_hrsLeft);
   minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
   e_minsLeft = (e_hrsLeft - hrsLeft)*60;
   secLeft = Math.floor(e_hrsLeft);
   secLeft = Math.floor((e_minsLeft - minsLeft)*60);
   
   finalString = "<span class=\"red\">Čas do ukončení: "+daysLeft+" dní, "+hrsLeft+" hodin, "+minsLeft+" minut, "+secLeft+" sekund.</span>"
   document.getElementById("cas").innerHTML = finalString;
   setTimeout(function() {showtime(countdown)}, 1000); 
 }

Vše funguje jak má, ale zjistil jsem, že doma mi to ukazuje o 2 hodiny víc, než v práci. (??)
To znamená, že když se kouknu v práci, tak čas do ukončení je např. 5 dní a 13 hodin, ale v ten samý čas doma mi to ukáže čas do konce 5 dní a 11 hodin!

Dokáže mě někdo z vás nasměrovat nebo říct, proč tomu tak je?
Díky :)
ProbablyYes
Profil
Zdravím,

javascript běží na straně klienta - bere čas ze strany klienta. Předpokládám tedy, že v práci máte nastavený jiný čas přímo v počítači.
Hoonzooid
Profil *
ProbablyYes:
javascript běží na straně klienta

Ano, to samozřejmě vím... Čas je synchronizován automaticky a samozřejmě na obou počítačích (jak doma, tak v práci) je čas stejný.
_es
Profil
Hoonzooid:
Z dodaných informácií ťažko vyveštiť problém. Ten skript vyzerá pochybne, skús si nájsť nejaký iný, alebo použi napríklad Odpočítávání k určitému datu a hodině.
Hoonzooid
Profil *
Jakoby na tom skriptu dle mého názoru nic pochybného není... Akorát tam jsou dva řádky navíc, které by tam být nemusely. Skript je normálně funkční, spíš jsem si myslel, že problém bude někde v UTC nebo getTimezoneOffset a myslel jsem, že mi to tu někdo osvětlí.
_es
Profil
Hoonzooid:
Skript je „pochybný“ napríklad už len preto, že nedefinuje niektoré premenné ( Časté potíže, zajímavosti a poučné debaty » Používejte var). Na nejakú akciu v pravidelnom čase je vhodná metóda setInterval. Ak už „čas do ukončenia“ skončí, tak to asi bude dávať nezmyselný výstup. Okrem toho si dal málo informácií. Možno je problém v tom, s akým argumentom je funkcia volaná - to si neprezradil. Či je rovnaký problém vo všetkých prehliadačoch alebo len v niektorých... Problém však tipujem na to, že na jednom stroji je čas nastavený nesprávne a to tak, že je síce zobrazený správny miestny (letný) čas, no nie je správne nastavený UTC čas a časové pásmo.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: