Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
#1 · Zasláno: 26. 7. 2010, 14:56:34
Chtěl bych se zeptat, jestli nejde nějak udělat, aby se čas na stránce aktualizoval, tzn. po vteřině tam skočí další vteřina.
Mám to zatím takhle, ale to vypíše ten čas jen při načtení stránky. <?php $datum=Date("d.m.YH:i:s"); echo $datum ?> |
||
Fergi Profil |
#2 · Zasláno: 26. 7. 2010, 15:01:06
Jde to pomocí javascriptu (www.jakpsatweb.cz/javascript/priklady/datum-menici.html) pomocí php něco takového nelze udělat....
|
||
Alphard Profil |
#3 · Zasláno: 26. 7. 2010, 15:02:03
Lze to např. javascriptem http://www.jakpsatweb.cz/javascript/priklady/datum-menici.html.
PHP to neumí. Stránka se vygeneruje a pak už se nemění. PS: naprostou většinu návštěvníků to nezajímá. Mají hodiny v pravém dolním rohu na monitoru, možná i v postranním panelu, hodinky, budík na stole, hodiny na zdí... |
||
David1256 Profil |
Děkuji, ale jak to vylepšit, aby se zobrazovaly minuty, sekundy a vůbec vše ve formátu :08 a né jen :8 jak je to na http://www.jakpsatweb.cz/javascript/priklady/datum-menici.html
Moderátor Alphard: Přesunuto do javascriptu.
|
||
Witiko Profil |
#5 · Zasláno: 26. 7. 2010, 17:47:24 · Upravil/a: Witiko
Nějak takto? (Poznámka: sleduj //komentáře)
<p>Ahoj, teď je právě <span id="cas"></span>. <script type = "text/javascript"> function naplnCas(){ var datum = new Date(); var aktualniCas = [String(datum.getHours()),String(datum.getMinutes()), String(datum.getSeconds())]; for(var count = 0; count < aktualniCas.length; count++) { if(aktualniCas[count].length < 2) aktualniCas[count] = "0" + aktualniCas[count]; } window.document.getElementById("cas").innerHTML = aktualniCas.join(":"); } // Přesunul bych celý script do head a následující řádky nalepil na window.onload = function() { naplnCas(); window.setInterval("naplnCas()", 1000); // } </script> Takhle ale celý script závisí na nastavení času u návštěvníka. Pokud chceš synchronizaci se serverem pomocí php, není nic lehčího. Schéma jak na to: // Potřeba umístit rovnou do head, aby nebyl čas zkreslený dobou načítání stránky var clientTime = new Date().getTime(); var serverTime = <?php echo time()*1000; ?>; // php operuje v řádu sekund, ne milisekund jako javascript var offset = serverTime - clientTime; ... pak ve funkci naplnCas: var datum = new Date(); datum.setTime(datum.getTime() + offset); |
||
David1256 Profil |
#6 · Zasláno: 26. 7. 2010, 21:38:15
Ti nevim jak tobě, ale mně to zobrazuje pořád ve formátu :1 a né :01.
|
||
Witiko Profil |
#7 · Zasláno: 26. 7. 2010, 21:42:45
Protože jsem se upsal v for cyklu, netestovala se délka řetězce ale tabulky, opraveno.
|
||
_es Profil |
#8 · Zasláno: 26. 7. 2010, 21:43:13
David1256:
Vyhľadaj si na tejto diskusii nejaký iný skript. Hľadaj "odpočet". |
||
David1256 Profil |
#9 · Zasláno: 26. 7. 2010, 21:47:14
Witiko:
Díky už to funguje, jak má. |
||
Witiko Profil |
#10 · Zasláno: 26. 7. 2010, 22:08:01 · Upravil/a: Witiko
Tady je ten php script, který zajistí, že čas není závislý na klientovi:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Language" content="cs"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title>Čas</title> <script type='text/javascript'> var clientTime = new Date().getTime(), serverTime = <?php echo time()*1000; ?>, offset = serverTime - clientTime, serverTimeSpan, clientTimeSpan; function time() { if(!serverTimeSpan || clientTimeSpan) { serverTimeSpan = document.getElementById("server-time"); clientTimeSpan = document.getElementById("client-time"); } var timeObject = new Date(); var clientTime = [String(timeObject.getHours()), String(timeObject.getMinutes()), String(timeObject.getSeconds())]; timeObject.setTime(timeObject.getTime() + offset); var serverTime = [String(timeObject.getHours()), String(timeObject.getMinutes()), String(timeObject.getSeconds())]; for(var count = 0; count < 3; count++) { if(clientTime[count].length < 2) clientTime[count] = "0" + clientTime[count]; if(serverTime[count].length < 2) serverTime[count] = "0" + serverTime[count]; } serverTimeSpan.innerHTML = serverTime.join(":"); clientTimeSpan.innerHTML = clientTime.join(":"); } </script> </head> <body onload="window.setInterval(time,1000);"> <b><span id="server-time"><?php echo date( 'H:i:s', time() ) ?></span></b> - Server time<br> <b><span id="client-time"><script type="text/javascript"> (function() { var timeObject = new Date(); var clientTime = [String(timeObject.getHours()), String(timeObject.getMinutes()), String(timeObject.getSeconds())]; for(var count = 0; count < 3; count++) { if(clientTime[count].length < 2) clientTime[count] = "0" + clientTime[count]; } document.write(clientTime.join(":")); })(); </script></span></b> - Client time </body> </html> Živá ukázka |
||
David1256 Profil |
#11 · Zasláno: 26. 7. 2010, 22:42:13
Witiko:
Díky ještě jednou. |
||
Časová prodleva: 14 let
|
0