Autor | Zpráva | ||
---|---|---|---|
Študy Profil * |
#1 · Zasláno: 22. 11. 2008, 20:51:32
Prosim vás mám problém... distal sem za úkol sehnad na jednu hru odpočítávač času a už sem to tu hlecal cca 2h sice sem našel spoustu dobrích scriptů ale mé ten co potřebuju...
já potřebuju aby ten čas byl v hodinách:minutách:sekundách např: 02:29:05 díky všem za pomoc |
||
_es Profil |
#2 · Zasláno: 22. 11. 2008, 21:09:31 · Upravil/a: _es
Zobrazí aktuálny čas:
<span id="cas"></span> <script> window.setInterval(function(){window.document.getElementById("cas").innerHTML=(new Date()).toLocaleTimeString();},1000); </script> |
||
X-force Profil * |
#3 · Zasláno: 22. 11. 2008, 21:19:14
Myslíš třeba jako za jak dlouho hra vyjde? Zkus to udělat raději ve flashi než v JS
|
||
_es Profil |
#4 · Zasláno: 22. 11. 2008, 21:25:55 · Upravil/a: _es
X-force
„Zkus to udělat raději ve flashi než v JS“ Dotaz je v sekcii Javascript. Myslíš, že "ve flashi" by to bolo jednoduchšie? Alebo by si mu mohol poradiť ako na to s Javou, len aby jeho Flash neskončil "ve flaši". |
||
X-force Profil * |
#5 · Zasláno: 22. 11. 2008, 21:28:19
Hmm jen jsem radil, podle mně se rady odkazující na rozšíření, vylepšení, zjednoudušení apod., které se nevstahují k danému tématu jsou jenom + a další možností jak udělat "to samé ale jinak". Pokud nic nenajde tak může začít pátrat na webu na dotazy týkajících se Flashe
|
||
Študy Profil * |
#6 · Zasláno: 22. 11. 2008, 21:36:28
no myslel se do 0
|
||
Chamurappi Profil |
#7 · Zasláno: 22. 11. 2008, 21:36:31
Reaguji na X-force:
„podle mně se rady odkazující na rozšíření, vylepšení, zjednoudušení apod.“ Nic z toho jsi mu ale neporadil. Flashem si nijak nepomůže. |
||
X-force Profil * |
#8 · Zasláno: 22. 11. 2008, 21:38:47
Ne? a proč by si s ním nemohl pomoct. Takže podle tebe jak o tak vidím je Flash k ničemu?
|
||
_es Profil |
#9 · Zasláno: 23. 11. 2008, 00:10:40 · Upravil/a: _es
<span id="cas"></span> <script> var x=Date.UTC(2008,10,23,12,30,15)+((new Date()).getTimezoneOffset())*60*1000;//23.11.2008 12:30:15 UTC (nie 23.10) + oprava zobrazenia podľa časového pásma window.setInterval(function(){window.document.getElementById("cas").innerHTML=(new Date(x-new Date())).toLocaleTimeString();},1000); </script> Malá nevýhoda je, že sa script spolieha na miestne zobrazenie času. Takže pri anglickom nastavení bude miesto 15:00:00 zobrazovať 03:00:00 PM. Ešte je možnosť namiesto toLocaleTimeString použiť toTimeString, no potom treba orezať nadbytočné časti. Alebo tak ako väčšina takýchto scriptov, poskladať to celé do reťazca z jednotlivých častí. |
||
Chamurappi Profil |
#10 · Zasláno: 23. 11. 2008, 01:27:21
Reaguji na _es:
Víš o tom, že konstruktor třídy Date umí přijmout jako argumenty rok, měsíc, den, hodinu, minutu a sekundu a vytváří pak instanci, která už je v časové zóně systému? Mělo by stačit toto: var x = new Date(2008, 10, 23, 12, 30, 15); |
||
_es Profil |
#11 · Zasláno: 23. 11. 2008, 01:56:16 · Upravil/a: _es
Chamurappi
„Víš o tom, že konstruktor třídy Date umí přijmout jako argumenty rok, měsíc, den, hodinu, minutu a sekundu a vytváří pak instanci, která už je v časové zóně systému? Mělo by stačit toto: var x = new Date(2008, 10, 23, 12, 30, 15); To je pravda, no čas som posunul kvôli volaniu metódy toLocaleTimeString, ktorá výsledný čas posúva podľa časového pásma. Metóda toLocaleTimeString je vlastne zneužitá na učel, na ktorý nie je určená. Metóda očakáva čas, no dostáva rozdiel časov, tak to treba "opraviť", aby sa to zobrazilo správne. Schválne som použil Date.UTC(,,,,,) namiesto new Date(,,,,,), aby nebol čas v x závislý od časového pásma. Ak by sa script použil napríklad na odpočítanie toho, že sa má napríklad za 5 hodín niečo stať, tak v mojom scripte to nezávisí od časového pásma. |
||
_es Profil |
#12 · Zasláno: 23. 11. 2008, 02:23:12
Chamurappi
Vlastne máš, možno nechtiac, pravdu, dá sa to použiť aj podľa teba, no do konštrukteru Date je treba zadávať tiež čas v UTC. Vtedy sa všetky tie chyby posunutia času navzájom vyrušia. Teda kód by mohol byť: <span id="cas"></span> <script> var x = new Date(2008,10,23,12,30,15);//23.11.2008 12:30:15 UTC (nie 23.10) + oprava zobrazenia podľa časového pásma (čas treba zadať v UTC) window.setInterval(function(){window.document.getElementById("cas").innerHTML=(new Date(x-new Date())).toLocaleTimeString();},1000); </script> |
||
Chamurappi Profil |
#13 · Zasláno: 23. 11. 2008, 05:35:09
Reaguji na X-force:
„a proč by si s ním nemohl pomoct“ Protože ve Flashi by musel v ActionScriptu (což je příbuzný JavaScriptu) napsat skoro přesně to samé, co teď potřebuje napsat v JavaScriptu. Flash má menší podporu než JS a je to špatně přístupná neforemná potvůrka. „Takže podle tebe jak o tak vidím je Flash k ničemu?“ Řada lidí se mě marně snaží přesvědčit, že k ničemu je — že se hodí jen na reklamy a na drobnosti, které jdou krásně řešit i bez něj (jako třeba odpočítávání). Reaguji na _es: „Schválne som použil Date.UTC(,,,,,) namiesto new Date(,,,,,), aby nebol čas v x závislý od časového pásma.“ Pak sis tu závislost ale sám vyrobil přičtením ((new Date()).getTimezoneOffset())*60*1000. „Ak by sa script použil napríklad na odpočítanie toho, že sa má napríklad za 5 hodín niečo stať, tak v mojom scripte to nezávisí od časového pásma.“ Pokud vím, tak mé x je stejné jako tvé x. (Respektive mé x.getTime() je stejné jako tvé x.) Ty si vyrábíš čas v UTC a pak k němu přičítáš časovou zónu. Já vyrábím čas rovnou v té časové zóně. Co se pak s časy dělá, na tom již moc nezáleží — docházíme k témuž výsledku v hodnotě x. „do konštrukteru Date je treba zadávať tiež čas v UTC“ Není. Časové zóny můžeš při počítání rozdílu zanedbat, vyruší se. (Pokud se akce, do níž se odpočítává, koná ve stejné časové zóně, jako se odpočítává.) „Metóda očakáva čas, no dostáva rozdiel časov, tak to treba "opraviť"“ Jednak nepotřebuje, jednak nic neopravuješ. Tím „new Date(x-new Date())“ mimochodem vytváříš datum blízké půlnoci 1. ledna 1970 (času 00:00:00 v UTC). Argument konstruktoru se bere jako počet milisekund od počátku času a … hm. To ti pak přeci musí metoda toLocaleTimeString() vracet špatný čas, ne? Kdyby byl rozdíl jedna sekunda, zavolal by se new Date(1000).toLocaleTimeString() a to by v místním čase zóny GMT+01:00 vypadalo jako „01:00:01“. Škoda, že není Země placatá. Reaguji na Študyho: <span id="cas"></span> <script> var x = new Date(2008, 10, 23, 12, 30, 15); setInterval(function() { // rozpočítání na časové jednotky (ms, s, min, h) var t = Math.max(x - new Date(), 0), parts = []; for(var i = 0, m = [1000, 60, 60]; m[i]; i++) { parts[i] = t % m[i]; t = Math.floor(t / m[i]); } parts[i] = t; // formátovací hrátky s výstupem var cas = []; for(var i = 3; i > 0; i--) cas[3 - i] = (parts[i] > 9 ? "" : "0") + parts[i]; // výstup document.getElementById("cas").innerHTML = cas.join(":"); }, 1000); </script> |
||
_es Profil |
#14 · Zasláno: 23. 11. 2008, 07:59:07 · Upravil/a: _es
Chamurappi
Pri tej závislosti od časového pásma si mi asi nerozumel, myslel som to, aby sa pri spustení scriptu zobrazil rovnaký odpočet pri hocijakom nastavení časového pásma. Ak tvoj script spustíš pri rôznych nastaveniach časového pásma, tak bude odpočitavanie rôzne. Pri mojom scripte bude odpočítavanie stále rovnaké. Na to, aby tvoj script tiež tak fungoval, stačí to len upraviť: var x = Date.UTC(2008, 10, 23, 12, 30, 15); Tvoj script je univerzálnejší na úpravy, dlhší, zložitejší, pomalší. Môj je zas kratší, rýchlejší, no používa časové funkcie inak, ako sú určené, čo môže niekoho zmiasť. To chybné použitie priradenia času a použitia časových funkcií, ktoré mi vytýkaš, je naozaj chybné, no je to chybné úmyselne, ale vo výsledku je to správne. Celkovo je ten tvoj script asi lepší, mne sa nechcelo až tak hrať s tým algoritmom, ale som použil/zneužil na to toLocaleTimeString. |
||
Študy Profil * |
#15 · Zasláno: 23. 11. 2008, 08:56:13
joj díky moc všem :-D
|
||
Chamurappi Profil |
#16 · Zasláno: 24. 11. 2008, 00:05:52
Reaguji na _es:
„aby sa pri spustení scriptu zobrazil rovnaký odpočet pri hocijakom nastavení časového pásma“ Aha. Už chápu. Dobrý nápad. Docela jsem se v těch časových zónách zamotal. „používa časové funkcie inak, ako sú určené, čo môže niekoho zmiasť“ Stejným postupem by nešlo moc pohodlně počítat měsíce či roky. Při rozdílu větším než den udělá tvůj skript modulo 24 hodin. |
||
_es Profil |
#17 · Zasláno: 24. 11. 2008, 00:14:33 · Upravil/a: _es
Chamurappi
Ešte by sa dali tak počítať dni do 31 (31 dní januára 1970). No pri nastavení amerického 12 hodinového zobrazenia by bolo asi dosť mätúce to AM/PM. Metóda toLocaleTimeString je veľmi vhodná pre zobrazovanie presného času, kedy je vlastne tá závislosť od miestneho nastavenia prospešná. Na tento účel sa veľmi nehodí. |
||
Časová prodleva: 1 měsíc
|
|||
Zdeny RC Profil * |
#18 · Zasláno: 29. 12. 2008, 13:08:47
Nazdar prosím chci pro web odpočet času do konce roku od 1.1.2009 0:0:01 chci rozjet na našem webu nové profily.
Ale a´t to zkouším jak chci nejede mi to pomuže někdo ? |
||
Měsíček Profil |
#19 · Zasláno: 29. 12. 2008, 13:10:36
Vždyť nahoře máš funkční řešení ;-)
|
||
Zdeny RC Profil * |
#20 · Zasláno: 30. 12. 2008, 19:28:39
„Vždyť nahoře máš funkční řešení ;-)“
když to vložim do kodu tak mi to počita jen čas ne dny..... |
||
Časová prodleva: 2 roky
|
|||
DJ D8 Profil |
#21 · Zasláno: 17. 6. 2011, 14:50:16
Odpočítává to sice dobře, ale zobrazuje to jenom čas do konce dne a nejspíš až bude ten onen den, odpočte to do té hodiny, ale pokud jsem to pochopil, všichni chtějí odpočet stylu: Zbývá: 5 Dní 4 Hod 32 min 15 sek...
Snad něco najdu... |
||
Časová prodleva: 13 let
|
0