| 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: 12 let
|
|||
0