Stránka 1 z 1
Jak vytvořit odpočet času
Napsal: pát 29. bře 2013, 15:51
od likeandbruno
Zdravím potřeboval bych poradit jak vytvořím odpočet času např. další vysílání bude za 2 hodiny, 5 minut a 35 sekund a jak by odpočet skončil tak aby se stránka znovu načetla ale bez toho odpočítávání děkuji za radu.
Re: Jak vytvořit odpočet času
Napsal: pát 29. bře 2013, 18:44
od PSGYG
Cau treba tady mas navod
http://www.panickov.esitex.com/clanky/l ... -casu.html jinak staci pouzit google a najde ti toho hafo....

Re: Jak vytvořit odpočet času
Napsal: sob 30. bře 2013, 21:12
od Václav Sedlář
Nedávno jsem potřeboval vytvořit něco podobného v javasriptu. Mám na to script (viz. níže), který funguje takto (funguje všude krom IE - pokud víte proč, poraďte mi...):
věděl jsem, že teď je 30.3.2013 21:00 a potřebuji odpočet např. 25 minut a poté automaticky odeslat form, tak jsem si ve formu udělal pole, kam jsem vypočetl pomocí PHP aktuální+25minut datum_čas a ten uložil do skrytého pole ve formu. Javasript si vzal výsledný čas a počítal...formát data a času, který si bere následující script musí být takový to: 03 30, 2013, 21:25:30
script:
Kód: Vybrat vše
var timerID = null;
var timerRunning = false;
var timerID = null;
var timerRunning = false;
function showtime() {
var cas = document.getElementById("pom_cas").value;
today = new Date();
Prodej = new Date(cas); /*"feb 22, 2013, 22:20"*/
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (Prodej.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
hrsLeft = hrsLeft;
e_minsLeft = (e_hrsLeft - hrsLeft)*60;
secLeft = Math.floor(e_hrsLeft);
secLeft = Math.floor((e_minsLeft - minsLeft)*60);
secLeft = secLeft;
/*Temp3='Zbývá '+daysLeft+' dní, '+hrsLeft+' hodin, '+minsLeft+' minut, '+secLeft+' sekund.'*/
Temp3='Zbývá '+minsLeft+':'+secLeft;
if(((minsLeft=="0" || minsLeft=="00") && (secLeft=="0" || secLeft=="00"))){
/*ZDE VLOŽ TO CO SE MÁ UDĚLAT AŽ SE ODPOČÍTÁ ČAS NA NULU*/
vyhodnotit();
}
if(secLeft<10){
Temp3=minsLeft+':0'+secLeft;
}else{
Temp3=minsLeft+':'+secLeft;
}
document.getElementById("odpocet_casu").innerHTML=Temp3;
timerID = setTimeout("showtime()",1000);
timerRunning = true;
}
function stopclock () {
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}
function stopClock() {
stopclock();
return;
}
function startclock () {
stopclock();
showtime();
}
v html pak byl tento kod pro spuštění odpočtu času (víc druhů spuštění kvůli různý prohlížečům):
Kód: Vybrat vše
<script>
if(window.addEventListener) {
window.addEventListener("load",function() { startclock(); },false);
}
else if(window.attachEvent) {
window.attachEvent("onload",function() { startclock(); });
}
else {
window.onload=function() { startclock(); };
}
</script>
a ještě funkce php pro výpočet budoucího času, funkci se předává počet minut:
Kód: Vybrat vše
function datum_cas($cas){
$cas_s=$cas*60;
$vysl_cas="+".$cas_s." seconds";
$datum_cas=Date("m d, Y, H:i:s", strtotime($vysl_cas));
return $datum_cas;
}
snad ti to pomůže...
Re: Jak vytvořit odpočet času
Napsal: úte 2. dub 2013, 02:43
od 1Pupik1989
Václav Sedlář: Už jsem ti k tomu odpočtu času jednou psal. To co teď dáváš za kód, je jedním slovem "hnus". Proč tam máš všechno 2x?
Re: Jak vytvořit odpočet času
Napsal: úte 2. dub 2013, 06:30
od Exp
Zajímalo by mě jakej smysl má třeba tohle?
Re: Jak vytvořit odpočet času
Napsal: úte 2. dub 2013, 17:42
od 1Pupik1989
A taky ten kód nebude fungovat, pokud čas nebude přesně 0. Takže pokud bude třeba -100, tak to poběží dále. Navíc nechápu proč tam je třeba tento řádek:
Kód: Vybrat vše
if(((minsLeft=="0" || minsLeft=="00") && (secLeft=="0" || secLeft=="00"))){
Proč se tam neporovnává spíš celkový čas? A co když budou zbývat ještě nějaké dny nebo hodiny?
I když moje řešení není nějak vyladěné, ale připadá mi přeci jen trošku čistější a kratší.
Kód: Vybrat vše
function Timer(time){
this.time = time;
};
Timer.prototype = {
start:function(){ //Spuštění funkce
var that = this;
this.step(this.time);
this.timer = setInterval(function(){
that.time -= that.subTime;
that.step(that.time);
if(that.time<=0){
that.stop();
that.complete();
}
},this.subTime);
},
subTime:1000, //Čas po kterém se cyklus opakuje
step:function(){ //Zde se dá nastavit, co se každý krok stane
},
complete:function(){ //Co se stane, až časovač dojde nakonec tedy k 0
},
stop:function(){ //zastavení časovače
clearInterval(this.timer);
},
toString:function(){ //Převod milisekund na řetězec
if(this.time<0){ return false; }
var diff = this.time;
var d = 24*60*60*1000, h = 60*60*1000, m = 60*1000;
var days = diff/d ^ 0;
diff -= days*d;
var hours = diff/h ^ 0;
diff -= hours*h;
var minutes = diff/m ^ 0;
diff -= minutes*m;
var seconds = diff/1000 ^ 0;
diff -= seconds*1000;
return days+" dní "+hours+":"+minutes+":"+
seconds+"." +diff;
}
};