Autor | Zpráva | ||
---|---|---|---|
Halluz-man Profil * |
#1 · Zasláno: 14. 10. 2007, 16:24:33
Chtel bych abych mel na webu samostatny cas nezavisle na tom jaky je v pocitaci.
Hledal sem kde se dalo, ale nic sem nenasel. Nevite jestli to vubec jde? :) |
||
Alphard Profil |
#2 · Zasláno: 14. 10. 2007, 16:36:31 · Upravil/a: Alphard
javascriptem těžko, v PHP bez problémů
http://cz2.php.net/manual/cs/function.date.php ale bude statický v javascriptu by se musel využít třeba AJAX a stahovat čas z nějakého serveru, kde je k dispozici a ještě je otázka ke zvážení, jestli to má smysl já např. vidím na hodiny, budík, hodinky (mám je skoro pořád) a mám přesný čas na počítači (automaticky se aktualizuje, má to tak většina lidí), když mě bude zajímat, kolik je hodin, nebudu to hledat na nějakých stránkách |
||
Halluz-man Profil * |
#3 · Zasláno: 14. 10. 2007, 16:51:29
je to dlouhy jak cernochuv penis ale diki ;)
|
||
Joker Profil |
#4 · Zasláno: 14. 10. 2007, 16:54:06
Alphard
ale bude statický Nemusí být. Stačí v PHP předat Javascriptu nějaký počáteční čas a potom ho Javascriptem udělat dynamický. |
||
Halluz-man Profil * |
#5 · Zasláno: 14. 10. 2007, 17:00:04
Mohli byste vypsat tu cast kde se o tom pise? V Php se moc nevyznam a anglictina taky neni nejlepsi.
|
||
Alphard Profil |
#6 · Zasláno: 14. 10. 2007, 17:32:58
Joker
jo, to mě taky napadlo, ale 1. nebude to jednoduché (setInterval AFAIK není dostačně přesný, při opakovaném přičítání 1 sekundy bude čas zanedlouho špatný a i kdyby ne, bude se s tím muset pracovat jako s čísly, tj. přepočet sekundy, minuty, hodiny) 2. při načítání stránky vznikne prodleva Halluz-man potřebuješ plynulou změnu? |
||
fandaa Profil |
#7 · Zasláno: 14. 10. 2007, 17:50:07 · Upravil/a: fandaa
Halluz-man
Mohli byste vypsat tu cast kde se o tom pise? V Php se moc nevyznam a anglictina taky neni nejlepsi. Zvlástní, ale http://cz2.php.net/manual/cs/function.date.php je v češtině. |
||
Halluz-man Profil * |
#8 · Zasláno: 14. 10. 2007, 18:29:22
Alphard
No jasne :) fandaa Nikde nevidim, ze by bylo neco o delani vlasniho casu v cestine. |
||
Joker Profil |
#9 · Zasláno: 14. 10. 2007, 18:52:49
Alphard
To je pravda, ale: ad 1. skoro určitě by se to zpožďovalo, ale ještě by šlo na začátku spočítat rozdíl mezi tím "vzdáleným" a "místním" časem a potom synchronizovat podle "místního" času. ad 2. to jo, no. Ovšem je otázka, nakolik to bude vadit. Při většině použití nebude pár sekund rozdílu hrát roli. Ještě by šlo ten čas pravidelně synchronizovat přes AJAX :-) |
||
Alphard Profil |
#10 · Zasláno: 14. 10. 2007, 19:46:57
[i]Ještě by šlo ten čas pravidelně synchronizovat přes AJAX :-)[i]
to jsem psal :-) ad1. to bylo řešení, ale také ne jednoduché připomenul bych otázku smyslu dávání času na web, IMHO je to zbytečné |
||
los Profil * |
#11 · Zasláno: 14. 10. 2007, 20:19:50
1. setInterval je dostatočne presný.
2. áno, vznikne oneskorenie. Aktualizovať cez Ajax je zbytočné, pretože to oneskorenie bude aj tam. Najlepšie (hneď po možnosti nedávať čas na web vôbec) je na začiatku si zapamätať časový rozdiel medzi klientom a serverom a po každej sekunde pomocou setInterval aktualizovať. |
||
Halluz-man Profil * |
#12 · Zasláno: 15. 10. 2007, 07:22:27
Tak to na to kaslu :) Je to nejak az moc obtizne
|
||
Časová prodleva: 3 dny
|
|||
peta Profil |
#13 · Zasláno: 18. 10. 2007, 08:18:16 · Upravil/a: peta
Halluz-man
jakpsatweb - javascript - datum a cas jakpsatweb - javascript - priklady - datum a cas Akorat musis dostat spravne casove razitko pres PHP (protoze JS datum, pokud pouzijes aktualni, ten se bere z toho, co ma nastaven uzivatel a tim bych si hodinky rozhodne neserizoval :) ) cz.php.net/date dole jsou ruzne priklady. Pokud umis spustit PHP nebo mas server, ktery PHP podporuje, pak si zkus, co ktery priklad dela. A druhy problemek, bylo by mozna dobre, pokud se stranka neobnovuje, cas od casu (5 minut?) si datum obnovit pres JS ajax / PHP, abys mel vzdy spravny cas, protoze plynuti casu pres JS je zavisle na www prohlizeci. Pokud je prohlizec zatizen, muze dojit k casovym odchylkam. jinak google.com date javascript php examples Pokud ti je anglictina cizi, pak to mas hold tezky jako programator. |
||
Bubák Profil |
#14 · Zasláno: 18. 10. 2007, 09:17:21
protoze JS datum, pokud pouzijes aktualni, ten se bere z toho, co ma nastaven uzivatel a tim bych si hodinky rozhodne neserizoval :)
Čas v PC se nastavuje ve win 1× týdně automaticky, takže pokud nemáš rozhašené nastavení, a pochybnou základní desku, je na to celkem spoleh. Nevím, jak často ce nastavuje čas v Linuxu, u některých distribucí jsem měl dojem, že vždy při startu. Dokonce mám větší obavu o přesnost času na běžném serveru. A druhy problemek, bylo by mozna dobre, pokud se stranka neobnovuje, cas od casu (5 minut?) si datum obnovit pres JS ajax / PHP, abys mel vzdy spravny cas, protoze plynuti casu pres JS je zavisle na www prohlizeci. Už tady bylo zmíněno, že nechat běžet hodiny pomocí setInterval není přesné. Ale na pouhém zobrazení času, získaného pomocí rozdílu časů na servru a v PC, pomocí funkce setInterval nevidím nic špatného, pokud stačí přesnost +/- nekolik sekund. |
||
los Profil * |
#15 · Zasláno: 18. 10. 2007, 11:43:15
Dá sa uvažovať, že časový rozdiel medzi časom klienta a časom servera je stále rovnaký. Funkcia setInterval slúži iba na obnovovanie textu (nie na pričítanie sekúnd), takže jej presnosť nie je dôležitá. Neviem, v čom je problém. Používať na synchronizáciu Ajax je naozaj zbytočné.
Celé by to vyzeralo zhruba takto (netestované, takže tam môžu byť nejaké chyby): var offset = new Date() - new Date(.../*cas zo servera*/); var dateEl = document.getElementById(.../*element s casom*/); var pad = function(x) { return (x < 10 ? "0" : "") + x; } setInterval(function() { if (dateEl) { var date = new Date(); date.setTime(date.getTime() - offset); dateEl.innerHTML = pad(date.getHours()) + ":" + pad(date.getMinutes()) + ":" + pad(date.getSeconds()); } }, 1000); |
||
Joker Profil |
#16 · Zasláno: 18. 10. 2007, 12:08:32
Alphard
ad1. to bylo řešení, ale také ne jednoduché Nemyslím si, že by to bylo složité... <script type="text/javascript"> var start = <?php echo($start); ?>; var cas = new Date(); var rozdil = cas.getTime() - start; function aktualizuj(){ var lokalni = new Date(); var t = new Date(lokalni.getTime()+rozdil); // naformátovat hodnoty z t, hodit do příslušného prvku a je to. } |
||
Časová prodleva: 17 let
|
0