Autor | Zpráva | ||
---|---|---|---|
Jenicek Profil |
#1 · Zasláno: 19. 10. 2014, 14:41:33
zdravím, udělal jsem si jednoduchý odpočet...
<script type="text/javascript"> var timerID = null; var timerRunning = false; function showtime() { today = new Date(); Vipkredit = new Date("November 15, 2014, 22:24:27") msPerDay = 24 * 60 * 60 * 1000 ; timeLeft = (Vipkredit.getTime() - today.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); hrsLeft = hrsLeft; ahrsLeft = hrsLeft + (daysLeft * 24); e_minsLeft = (e_hrsLeft - hrsLeft)*60; secLeft = Math.floor(e_hrsLeft); secLeft = Math.floor((e_minsLeft - minsLeft)*60); secLeft = secLeft; if(secLeft < 10) secLeft = '0' + secLeft; if(minsLeft < 10) minsLeft = '0' + minsLeft; Temp3=''+ahrsLeft+':'+minsLeft+':'+secLeft+'' document.getElementById('action_countdown_holder').innerHTML = Temp3; timerID = setTimeout("showtime()",1000); timerRunning = true; } var timerID = null; var timerRunning = false; function stopclock () { if(timerRunning) clearTimeout(timerID); timerRunning = false; } function stopClock() { stopclock(); return; } function startclock () { stopclock(); showtime(); } </script> jenže jsem si neuvědomil, že někdo může být v jiném státě a tam by mohl být jiný čas... co by jste doporučili aby se čas řídil středoevropským časem? |
||
juriad Profil |
Proč středoevropský? Měj veškerý čas v UTC - jsou pro to přímo určené metody.
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date (snad vše má UTC variantu). Doplněno: Zjistit rozdíl libovolných časových zón není tak jednoduché - musíš ty informace (pravidla) někde mít. Mohl bys sice počítat rozdíl proti UTC (to JS umí), ale pořád ti chybí informace o rozdílu mezi UTC a středoevropským. Kromě základního posunu 1 hodiny je ještě letní čas s nepěkným parvidlem: „Na letní čas se přechází každý rok poslední neděli v březnu v 02:00:00 SEČ na 03:00:00 SELČ. K návratu na zimní čas dochází poslední neděli v říjnu v 03:00:00 SELČ na 02:00:00 SEČ. Letní čas platí ve všech státech Evropy s výjma Islandu, Ruska, Běloruska, části Grónska a norských ostrovů Jan Mayen a Špicberky.“ Mimochodem, proč používáš setTimeout a ne setInterval? |
||
Jenicek Profil |
#3 · Zasláno: 19. 10. 2014, 16:21:29
no proto by bylo fajn používat pouze středoevropský čas... jelikož jde jen o odpočet tak přece pravidla řízení času je zbytečný... vypočítávat rozdíl mě napadlo také ale stále mi to přijde dost zbytečné
používat jen jedno časové pásmo vše docela zjednoduší... však i na diskusi se používá pouze čas serveru :) |
||
_es Profil |
Jenicek:
„však i na diskusi se používá pouze čas serveru :)“ No ale JS predsa nebeží na serveri. „přece pravidla řízení času je zbytečný...“ Tie pravidlá majú práve tie lokálne časy, ako SEČ, UTC je všade len jeden. |
||
Jenicek Profil |
#5 · Zasláno: 19. 10. 2014, 16:46:31
Původně jsem myslel něco takového
ale asi tam mám někde chybu a jsem slepý var timerID = null; var timerRunning = false; function showtime() { today = new Date(); casserveru = new Date("October 19, 2014, 16:45:31"); rozdil = (today.getTime() - casserveru.getTime()); if(rozdil < 0)rozdilnycas = (today.getTime() + rozdil.getTime()); if(rozdil > 0)rozdilnycas = (today.getTime() - rozdil.getTime()); Vipkredit = new Date("November 15, 2014, 22:24:27") msPerDay = 24 * 60 * 60 * 1000 ; timeLeft = (Vipkredit.getTime() - rozdilnycas.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); hrsLeft = hrsLeft; ahrsLeft = hrsLeft + (daysLeft * 24); e_minsLeft = (e_hrsLeft - hrsLeft)*60; secLeft = Math.floor(e_hrsLeft); secLeft = Math.floor((e_minsLeft - minsLeft)*60); secLeft = secLeft; if(secLeft < 10) secLeft = '0' + secLeft; if(minsLeft < 10) minsLeft = '0' + minsLeft; Temp3=''+ahrsLeft+':'+minsLeft+':'+secLeft+'' document.getElementById('action_countdown_holder').innerHTML = Temp3; timerID = setTimeout("showtime()",1000); timerRunning = true; } var timerID = null; var timerRunning = false; function stopclock () { if(timerRunning) clearTimeout(timerID); timerRunning = false; } function stopClock() { stopclock(); return; } function startclock () { stopclock(); showtime(); } |
||
Časová prodleva: 10 let
|
0