Autor | Zpráva | ||
---|---|---|---|
romanic Profil * |
Potřeboval bych skript na odpočívatadlo k určitému datu a hodině. (Např: do 10.října 10.00 zbývá ...)
Na netu jsem našek jen ke dnu. Díky za radu |
||
Joker Profil |
#2 · Zasláno: 5. 10. 2007, 15:32:26
To je relativně jednoduché, kdysi jsem dokonce napsal i PHP skript, který umožňuje různé druhy odpočítávání, nastavit odpočítávání proměnnou přes GET a podobně :-)
Ale pro Vaše použití viz zde: http://skripty.webz.cz/countdown.php?t=1197414000&typ=dhmss stačí se mrknout na zdrojový kód. Ten skript už je trochu starší a možná není ani úplně optimální, kdyžtak mi ho někdo opravte ;) Poznámka: konkrétně to odpočítávadlo počítá do 12. prosince 2007 ;-) Cíl odpočtu se ve skriptu nastavuje tady: var cil = 1197414000; to číslo je časové razítko (timestamp) času, do kterého se odpočítává. |
||
peta Profil |
#3 · Zasláno: 5. 10. 2007, 15:39:54
jakspatweb - javascript - priklady - datum a cas
google - javascript timeout script example |
||
Časová prodleva: 5 měsíců
|
|||
terabajt Profil |
#4 · Zasláno: 23. 2. 2008, 10:27:12 · Upravil/a: terabajt
Zdravim, potřeboval bych poradit jak udělat odpočítávání času, jestli by jste mi sem nemohli dát přesnej kód a napsaný co tam mám jak dát... Díky
P.S. prosim co nejrychleji je to moc důležitý |
||
Časová prodleva: 2 roky
|
|||
OndrejVlasák Profil * |
#5 · Zasláno: 16. 3. 2010, 14:13:37
Zkoušel jsem použít skript od Joker - http://skripty.webz.cz/countdown.php?t=1197414000&typ=dhmss Potřebuju přesně to co zde uvedl. Ovšem potřebuji tyto počítadla tři s tím, že v každém bude jiný cílový čas. Když dám tyto tři skripty pod sebe a nastavím tam jiné časy tak se mi navzájem ovlivňují a nefungují. Například čas z třetího scriptu se dostane do prvního scriptu a ostatní scripty ukazují již čas odpočítaný, ve skutečnosti to tak ovšem není.
ukázka: http://www.dozvitese.cz/pocitadlo.html Za každou radu bu vděčný. děkuji. |
||
Joker Profil |
#6 · Zasláno: 16. 3. 2010, 15:45:16 · Upravil/a: Joker
OndrejVlasák:
„Když dám tyto tři skripty pod sebe a nastavím tam jiné časy tak se mi navzájem ovlivňují a nefungují“ Protože ten skript má cílový čas a ID prvku které se má měnit uložené v globálních proměnných. Ten skript by asi chtěl vůbec celý přepsat :-) Ale taková rychlá oprava a zkrácení by byla asi takhle: var hlaska = "Čas už uplynul"; function odpocet(prvek, cil) { var el = document.getElementById(prvek); if(!el) return; var ted = new Date().getTime() / 1000; var diff = cil - ted; if(diff <= 0) { el.innerHTML = hlaska; return; } var tmp = diff; var d = Math.floor(tmp / 86400); tmp = tmp % 86400; var h = Math.floor(tmp / 3600); tmp = tmp % 3600; var m = Math.floor(tmp / 60); tmp = tmp % 60; var s = Math.floor(tmp); var casStr = ""; if(d > 4) casStr = d + " dní, "; else if(d > 1) casStr = d + " dny, "; else if(d > 0) casStr = d + " den, "; if(h < 10) casStr += "0"; casStr = casStr + h + "."; if(m < 10) casStr += "0"; casStr = casStr + m + ":"; if(s < 10) casStr += "0"; casStr = casStr + "" + s; el.innerHTML = casStr; setTimeout("odpocet('"+prvek+"',"+cil+")",995); } ...takhle by to mělo fungovat i pro víc odpočtů. Stačí na stránku nejdřív dát prvek "kontejner" pro odpočet a pak zavolat: odpocet("id-kontejneru", cílový čas) |
||
_es Profil |
#7 · Zasláno: 16. 3. 2010, 19:40:29
Joker:
Ten tvoj skript je trochu neefektívny a kazíš Chamurappimu osvetovú činnosť. Upraviť ho nejako takto: var hlaska = "Čas už uplynul"; function odpocet(prvek, cil){ var el = document.getElementById(prvek); if(!el) return; var casovac = setInterval(aktualizace, 1000); function aktualizace(){ var ted = new Date().getTime() / 1000; var diff = cil - ted; if(diff <= 0){ el.innerHTML = hlaska; clearInterval(casovac); return;} var tmp = diff; var d = Math.floor(tmp / 86400); tmp = tmp % 86400; var h = Math.floor(tmp / 3600); tmp = tmp % 3600; var m = Math.floor(tmp / 60); tmp = tmp % 60; var s = Math.floor(tmp); var casStr = ""; if(d > 4) casStr = d + " dní, "; else if(d > 1) casStr = d + " dny, "; else if(d > 0) casStr = d + " den, "; if(h < 10) casStr += "0"; casStr = casStr + h + "."; if(m < 10) casStr += "0"; casStr = casStr + m + ":"; if(s < 10) casStr += "0"; casStr = casStr + "" + s; el.innerHTML = casStr; } } |
||
mattyZEM Profil |
#8 · Zasláno: 18. 3. 2010, 21:57:08
Joker: Děkuji mnohokrát za script, je dobrý, jen je pro mě trochu naprd.
- Potřebuji těch odpočtů na stránku více, takže by mě zajímalo, jak by to šlo udělat přes funkci, kde bych dodal tu proměnnou time - Jak jí volat? V JSku neumím vážně nic :( - Potřebuji zrušit, nebo něčím nahradit ten div, jelikož jak jsem psal těch časů tam může být více... Mohl by jsi mi prosím říct, jak na to? Nebo ještě lépe, pokud by jsi byl tak laskav, to předělat? Byl bych ti velmi vděčný. |
||
_es Profil |
#9 · Zasláno: 18. 3. 2010, 22:54:31 · Upravil/a: _es
mattyZEM:
Trochu upravený kompletný HTML kód: <!DOCTYPE HTML> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <DIV id=a></DIV> <DIV id=b></DIV> <DIV id=c></DIV> <DIV id=d></DIV> <DIV id=e></DIV> <SCRIPT> var hlaska = "Čas už uplynul"; function odpocet(prvek, cil){ var el = document.getElementById(prvek); if(!el) return; var casovac = setInterval(aktualizace, 1000); function aktualizace(){ var ted = new Date().getTime(); var diff = cil - ted; if(diff <= 0){ el.innerHTML = hlaska; clearInterval(casovac); return;} var tmp = diff / 1000; var d = Math.floor(tmp / 86400); tmp = tmp % 86400; var h = Math.floor(tmp / 3600); tmp = tmp % 3600; var m = Math.floor(tmp / 60); tmp = tmp % 60; var s = Math.floor(tmp); var casStr = ""; if(d > 4) casStr = d + " dní, "; else if(d > 1) casStr = d + " dny, "; else if(d > 0) casStr = d + " den, "; if(h < 10) casStr += "0"; casStr = casStr + h + "."; if(m < 10) casStr += "0"; casStr = casStr + m + ":"; if(s < 10) casStr += "0"; casStr = casStr + "" + s; el.innerHTML = casStr; } } window.onload = function(){ odpocet("a", Date.UTC(2010, 4, 1, 12, 0)); // 1.5.2010 12:00 UTC odpocet("b", Date.UTC(2010, 5, 2, 14, 0)); // 2.6.2010 14:00 UTC odpocet("b", Date.UTC(2010, 5, 3, 14, 0)); // 3.6.2010 14:00 UTC odpocet("d", Date.UTC(2020, 8, 1, 9, 15)); // 1.9.2020 09:15 UTC odpocet("e", Date.UTC(2009, 0, 1, 0, 0)); // 1.1.2009 00:00 UTC } </SCRIPT> |
||
mattyZEM Profil |
#10 · Zasláno: 19. 3. 2010, 07:24:55 · Upravil/a: mattyZEM
Takže ID se nahradit nedá? protože, těch odpočítávání může být klidně i 10, 20 atd...
|
||
Joker Profil |
#11 · Zasláno: 19. 3. 2010, 08:22:06
_es:
„Ten tvoj skript je trochu neefektívny a kazíš Chamurappimu osvetovú činnosť.“ Však píšu, že by chtěl přepsat :-) ...jsem z toho starého skriptu jen vyházel document.all (protože dneska už asi fakt není potřeba) a upravil to, aby to fungovalo pro víc odpočtů. mattyZEM: Děkuji mnohokrát za script, je dobrý, jen je pro mě trochu naprd. - Potřebuji těch odpočtů na stránku více A kde je problém? Po té úpravě z toho je funkce, které předáte ID prvku kam se má odpočet psát a cílový čas do kterého se odpočítává. „Jak jí volat?“ Vždyť jsem to tam napsal! „Potřebuji zrušit, nebo něčím nahradit ten div, jelikož jak jsem psal těch časů tam může být více...“ eh? Jaký div? _es: Nebude pro získání klasického timestamp potřeba to date.UTC() ještě vydělit 1000? UTC (...) returns the number of milliseconds in a Date object since January 1, 1970, 00:00:00, universal time. |
||
_es Profil |
#12 · Zasláno: 19. 3. 2010, 09:17:37
Joker:
„Nebude pro získání klasického timestamp potřeba to date.UTC() ještě vydělit 1000?“ V JS to je v milisekundách, všetky metódy objektu Date pracujú s takým číslom. Preto som to delenie 1000 upravil na neskôr, tak aby ten tvoj kód nebolo treba príliš prerábať. Inak by sa musel ten druhý parameter volania tej funkcie v tom mojom poslednom skripte deliť 1000. mattyZEM: „Potřebuji těch odpočtů na stránku více“ V tom mojom skripte ich máš celkovo 5, snáď je to dosť zrozumiteľné, aby si si to upravil podľa potreby. |
||
Joker Profil |
#13 · Zasláno: 19. 3. 2010, 09:39:42
_es:
„Preto som to delenie 1000 upravil na neskôr“ Jo ajo, ono je to dělení přidané dovnitř té funkce. Ten původní skript byl stavěný na to, že se cílový čas plní z PHP, které má "standardní" timestamp (= počet sekund). |
||
OndrejVlasák Profil * |
#14 · Zasláno: 19. 3. 2010, 11:32:57
_es
Díky za upravený skript, pomohl.. |
||
mattyZEM Profil |
#15 · Zasláno: 19. 3. 2010, 13:05:13 · Upravil/a: mattyZEM
_es:
Jenže, já to potřebuju na timestamp, ne na datum... Joker: „eh? Jaký div?“ Promiň, blbě jsem se vyjádřil, to ID |
||
Chamurappi Profil |
#16 · Zasláno: 19. 3. 2010, 13:27:40
Reaguji na mattyZEMa:
„já to potřebuju na timestamp, ne na datum“ Metoda Date.UTC převádí datum na timestamp.
|
||
mattyZEM Profil |
#17 · Zasláno: 19. 3. 2010, 13:51:33
Chamurappi:
„Metoda Date.UTC převádí datum na timestamp.“ To znamená, že smažu funkci a místo toho tam vložím datum v TIMESTAMP? |
||
_es Profil |
#18 · Zasláno: 19. 3. 2010, 14:07:51
Chamurappi:
„Metoda Date.UTC převádí datum na timestamp.“ Ale asi tu ide o to, že v PHP je ten "timestamp" typ vraj v sekundách a v JavaScripte v milisekundách. Takže to pri prevodoch medzi tými jazykmi treba vynásobiť alebo vydeliť 1 000. |
||
Maťo Profil * |
#19 · Zasláno: 20. 3. 2010, 19:54:40
tu mas tiež suprový js ktorý nato reaguje a funguje ... nbez problemov
var month = '6'; // 1 through 12 or '*' within the next month, '0' for the current month var day = '2'; // day of month or + day offset var dow = 0; // day of week sun=1 sat=7 or 0 for whatever day it falls on var hour = 18; // 0 through 23 for the hour of the day var tz = 0; // offset in hours from UTC to your timezone var lab = 'cd'; // id of the entry on the page where the counter is to be inserted function start() {displayCountdown(setCountdown(month,day,hour,tz),lab);} loaded(lab,start); // Countdown Javascript // copyright 20th April 2005, 17th November 2006 by Stephen Chapman // permission to use this Javascript on your web page is granted // provided that all of the code in this script (including these // comments) is used without any alteration // you may change the start function if required var pageLoaded = 0; window.onload = function() {pageLoaded = 1;} function loaded(i,f) {if (document.getElementById && document.getElementById(i) != null) f(); else if (!pageLoaded) setTimeout('loaded(\''+i+'\','+f+')',100); } function setCountdown(month,day,hour,tz) {var m = month; if (month=='*') m = 0; var c = setC(m,day,hour,tz); if (month == '*' && c < 0) c = setC('*',day,hour,tz); return c;} function setC(month,day,hour,tz) {var toDate = new Date();if (day.substr(0,1) == '+') {var day1 = parseInt(day.substr(1));toDate.setDate(toDate.getDate()+day1);} else{toDate.setDate(day);}if (month == '*')toDate.setMonth(toDate.getMonth() + 1);else if (month > 0) { if (month <= toDate.getMonth())toDate.setFullYear(toDate.getFullYear() + 1);toDate.setMonth(month-1);} if (dow >0) toDate.setDate(toDate.getDate()+(dow-1-toDate.getDay())%7); toDate.setHours(hour);toDate.setMinutes(0-(tz*60));toDate.setSeconds(0);var fromDate = new Date();fromDate.setMinutes(fromDate.getMinutes() + fromDate.getTimezoneOffset());var diffDate = new Date(0);diffDate.setMilliseconds(toDate - fromDate);return Math.floor(diffDate.valueOf()/1000);} function displayCountdown(countdn,cd) {if (countdn < 0) document.getElementById(cd).innerHTML = "Spustenie odložené."; else {var secs = countdn % 60; if (secs < 10) secs = '0'+secs;var countdn1 = (countdn - secs) / 60;var mins = countdn1 % 60; if (mins < 10) mins = '0'+mins;countdn1 = (countdn1 - mins) / 60;var hours = countdn1 % 24;var days = (countdn1 - hours) / 24;document.getElementById(cd).innerHTML = days+' dní '+hours+' hodín '+mins+' minút '+secs+' sekúnd ';setTimeout('displayCountdown('+(countdn-1)+',\''+cd+'\');',999);}} a tam kde to chces dat tak to daj ... <div id="cd"></div> ja to pouzivam a je bez problemov ... uloz si ho do nejakeho js suboru a ptm daj do medzi <head> cesta ku scriptu |
||
Časová prodleva: 4 měsíce
|
|||
PETRAS Profil * |
#20 · Zasláno: 27. 7. 2010, 23:14:13
RE: mattyZEM: Zasláno: 18.3.2010 22:54:31
--> Trochu upravený kompletný HTML kód: <!DOCTYPE HTML> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <DIV id=a></DIV> <DIV id=b></DIV> <DIV id=c></DIV> <DIV id=d></DIV> <DIV id=e></DIV> <SCRIPT> var hlaska = "Čas už uplynul"; function odpocet(prvek, cil){ var el = document.getElementById(prvek); if(!el) return; var casovac = setInterval(aktualizace, 1000); function aktualizace(){......................................................................................... Super kod kamo,moc to pomohlo mejm strankam, kazdpodne to neni duvod proc pisu. Zajimalo by mne jestli by nesel nastavit casovy posun GMT+1, jelikoz tam mam ztratu o 1hodinu a pri formatovani casu, ktery je uz tak o hodinu vzadu (duvod jsou hodnoty 0 - 23), tak je to fakt na *****. Zaroven se ptam jestli tam nejde zmenit i formatovani casu z (2010, 6, 27, 19, 0) na (0000-00-00 00:00:00) ??? diky za odpovedi |
||
_es Profil |
#21 · Zasláno: 27. 7. 2010, 23:39:39 · Upravil/a: _es
PETRAS:
Výsledkom výrazu Date.UTC(2010, 6, 27, 19, 0) je v JavaScripte číslo, ktoré zodpovedá dátumu UTC definovanému podľa tých piatich parametrov.
Miesto toho výrazu tam môžeš dať iný výraz, alebo číslo, tak, aby výsledkom bolo to číslo, tuším počet milisekúnd od 1.1.1970. V PHP je to 1 000 krát menšie číslo. Ak chceš odrátavať k nejakej udalosti v miestnom čase, použiješ namiesto toho new Date(parametre).getTime()
„Zaroven se ptam jestli tam nejde zmenit i formatovani casu“ Aký má význam špekulovať nad nejakým formátovaním, ak je viditeľné len v zdrojovom kóde a jeho výsledkom je len obyčajné číslo? |
||
Časová prodleva: 15 let
|
0