Autor | Zpráva | ||
---|---|---|---|
jiri15 Profil |
#1 · Zasláno: 30. 1. 2013, 08:42:16
Dobrý den,
chtěl bych poprosit někoho ze zdejších guru o radu co dělám špatně. Mám v HTML frame se 4 políčky ve kterých se zobrazuje čas. Vše funguje naprosto v pořádku, pouze v posledním políčku se čas ukazuje špatně, například po 14:59 ukáže 14:60, 14:61, správně má být 15:00, 15:01. Prosím můžete mne popostrčit, nebo polopaticky ukázat v čem dělám chybu? Dole připojuji komplet kod. Děkuji Jiri <TABLE border=0 width="98%" align=center> <TBODY> <TR> <TD> <TABLE border=0 width="98%" align=center> <TBODY> <TR> <TD> <STYLE type=text/css> <!-- .style1 { font-size: 12px; font-weight: bold; } --> </STYLE> <FORM name=clock> <TABLE border=1 cellSpacing=2 cellPadding=2 width=350 bgColor=#558ec7 align=center> <TBODY> <TR> <TD colSpan=4 align=middle><STRONG><!-- Get todays Date --> <SCRIPT type=text/javascript> var monthArray=new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"); function countDDay(d,m,yr) { var today=new Date(); var todayY=today.getYear(); if (todayY < 1000) todayY+=1900; var todayM=today.getMonth(); var todayD=today.getDate(); var todaystring=monthArray[todayM]+" "+todayD+", "+todayY; var paststring=monthArray[m-1]+" "+d+", "+yr; var difference=(Math.round((Date.parse(todaystring)-Date.parse(paststring))/(59*60*24*1000))*1); difference+=" "; document.write(todaystring); } countDDay(01,12,2013); </SCRIPT> </STRONG></TD></TR> <!-- Get the 1st Time --> <TR> <TD vAlign=center align=middle><INPUT align=center size=4 name=local1> <SCRIPT type=text/javascript> function watch1() { var today=new Date(); var HoursU=today.getUTCHours(); var MinutesU=today.getUTCMinutes(); if (HoursU<10) HoursU="0"+HoursU; if(MinutesU<10) MinutesU="0"+MinutesU; document.clock.local1.value=HoursU+":"+MinutesU; setTimeout("watch1()",1000); } watch1(); </SCRIPT> <B>xxx</B> </TD> <!-- Get the 2nd Time --> <TD vAlign=center align=middle><INPUT align=center size=4 name=local2> <SCRIPT type=text/javascript> function watch2() { var today=new Date(); var HoursU=today.getUTCHours()+1; var MinutesU=today.getUTCMinutes(); if (HoursU<10) HoursU="0"+HoursU; if(MinutesU<10) MinutesU="0"+MinutesU; document.clock.local2.value=HoursU+":"+MinutesU; setTimeout("watch2()",1000); } watch2(); </SCRIPT> <B>xxx</B> </TD> <!-- Get the 3rd Time --> <TD vAlign=center align=middle><INPUT align=center size=4 name=local3> <SCRIPT type=text/javascript> function watch3() { var today=new Date(); var HoursU=today.getUTCHours()+1; var MinutesU=today.getUTCMinutes(); if (HoursU<10) HoursU="0"+HoursU; if(MinutesU<10) MinutesU="0"+MinutesU; document.clock.local3.value=HoursU+":"+MinutesU; setTimeout("watch3()",1000); } watch3(); </SCRIPT> <B>xxx</B> </TD> <!-- Get the 4rd Time --> <TD vAlign=center align=middle><INPUT align=center size=4 name=local4> <SCRIPT type=text/javascript> function watch4() { var today=new Date(); var HoursU=today.getUTCHours()+4; var MinutesU=today.getUTCMinutes()+30; if (HoursU<10) HoursU="0"+HoursU; if(MinutesU<10) MinutesU="0"+MinutesU; document.clock.local4.value=HoursU+":"+MinutesU; setTimeout("watch4()",10); } watch4(); </SCRIPT> <B>xxx</B> </TD> </TR> </TBODY> </TABLE> </FORM> </TD> </TR> </TBODY> </TABLE> <DIV> </DIV> </TD> </TR> </TBODY> </TABLE> |
||
_es Profil |
#2 · Zasláno: 30. 1. 2013, 09:00:20
jiri15:
var MinutesU=today.getUTCMinutes()+30; setTimeout("watch4()",10); |
||
jiri15 Profil |
#3 · Zasláno: 30. 1. 2013, 09:25:14
_es:
Děkuji za odpověď, jen bych chtěl požádat jestli mi můžete uvést jak dané parametry změnit (jaké dosadit korektní hodnoty0. |
||
weroro Profil |
function watch4() { var today = new Date(); var HoursU = today.getUTCHours() + 4; var MinutesU = today.getUTCMinutes() + 30; if (MinutesU > 59) { MinutesU -= 60; HoursU++; } if (MinutesU < 10) MinutesU = "0" + MinutesU; if (HoursU < 10) HoursU = "0" + HoursU; document.clock.local4.value = HoursU + ":" + MinutesU; setTimeout("watch4()", 1000); } watch4(); |
||
_es Profil |
#5 · Zasláno: 30. 1. 2013, 09:38:49
weroro:
S hentakým pochybným kódom sa mi veľmi babrať nechce. Všeobecne najprv zmeniť čas príslušného objektu Date a až potom z neho zisťovať hodiny a minúty. |
||
weroro Profil |
_es:
Myslím, že to je jedno. Stačilo tam hodiť tú jednu podmienku, ktorá to "ošetruje". Aspoň u mňa to fungovalo korektne, myslím, že je to ok. // Aspoň som si po dlhej dobe nastavil poriadne čas na systémových hodinách. :) |
||
jiri15 Profil |
#7 · Zasláno: 30. 1. 2013, 10:00:55
weroro:
Dobrý den, udělal jsem to jak radil weroro, tj. kod vypadá následovně: <!-- Get the 4rd Time --> <TD vAlign=center align=middle><INPUT align=center size=4 name=local4> <SCRIPT type=text/javascript> function watch4() function watch4() { var today=new Date(); var HoursU=today.getUTCHours() + 4; var MinutesU=today.getUTCMinutes() + 30; if (MinutesU > 59) { MinutesU -= 60; HoursU++; } if(MinutesU < 10) { MinutesU="0" + MinutesU; } if (HoursU < 10) { HoursU="0" + HoursU; } document.clock.local4.value=HoursU + ":" + MinutesU; setTimeout("watch4()",1); } watch4(); </SCRIPT> <B>xxx</B> zkoušeno v Chrome 24.0.1312.56 m, poslední políčko je prázdné a žádný čas se nezobrazí. Kde dělám chybu? Děkuji za vaši trpělivost |
||
_es Profil |
weroro:
„Myslím, že to je jedno.“ Nemôže to byť predsa jedno. Predsa ak k aktuálnym minútam niečo prirátaš, tak ti môže vyjsť číslo väčšie ako 59, rovnako aj pri hodinách viac ako 23. jiri15: „Kde dělám chybu?“ Jednako v tom, že spúšťaš všelijaké pochybné kódy a ešte v tom, že ich ešte viac „pokazíš“: setTimeout("watch4()",1); function watch4() function watch4() ... |
||
weroro Profil |
_es:
„... rovnako aj pri hodinách viac ako 23.“ Teraz som sa plesol po čele. To som skutočne prehliadol. Máš pravdu. jiri15: To nedokážeš poriadne skopírovať ani kus textu? <script type="text/javascript"> function watch4() { var today = new Date(); var HoursU = today.getUTCHours() + 4; var MinutesU = today.getUTCMinutes() + 30; if (MinutesU > 59) { MinutesU -= 60; HoursU++; } if (HoursU > 23) HoursU -= 24; if (MinutesU < 10) MinutesU = "0" + MinutesU; if (HoursU < 10) HoursU = "0" + HoursU; document.clock.local4.value = HoursU + ":" + MinutesU; setTimeout("watch4()", 1000); } watch4(); </script> _es: Snáď som ťa dobre pochopil, že si ma chcel iba upozorniť na chybu. A ak nie, vyhovor mi toto zmýšlanie: Ako prvé kontrolujem minúty. Ak ku napr. 44 minútam pripočítam 30, dostanem 74. Od toho odčítam 60 minút a prepíšem premennú Minuty výsledkom, zároveň zvýšim hodnotu Hodiny o 1. Ďalej kontrolujem hodiny a ak je hodnota väčšia ako 23 odčítam z danej hodnoty 24 a dostanem správny čas. Je to iba fix divného kódu. |
||
jiri15 Profil |
#10 · Zasláno: 30. 1. 2013, 10:47:41
weroro:
Děkuji všem za trpělivost a opravu tohoto pseudokodu, už jsem to zkopíroval správně. |
||
_es Profil |
weroro:
„Snáď som ťa dobre pochopil“ Nie, príslušnému objektu Date najprv posunieš čas a až potom z neho zisťuješ hodiny a minúty. Ale aj tak tie lokálne časy nebudú vždy správne: letný a zimný čas.
jiri15: Viď aj Časté potíže, zajímavosti a poučné debaty » Nepoužívejte eval , ani jeho obdoby.
|
||
Časová prodleva: 11 let
|
0