Jak vytvořit odpočet času

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
likeandbruno
Začátečník
Začátečník
Registrován: 23. srp 2012
Kontaktovat uživatele:

Jak vytvořit odpočet času

Příspěvek 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.
PSGYG
Nováček
Nováček
Uživatelský avatar
Registrován: 26. bře 2013

Re: Jak vytvořit odpočet času

Příspěvek 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.... ;-)
Obrázek
Václav Sedlář
Žlutá karta Bazar
Žlutá karta Bazar
Registrován: 01. dub 2006
Bydliště: Liberec
Kontaktovat uživatele:

Re: Jak vytvořit odpočet času

Příspěvek 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...
1Pupik1989
Začátečník
Začátečník
Registrován: 20. říj 2011
Bydliště: Dvůr Králové nad Labem

Re: Jak vytvořit odpočet času

Příspěvek 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?
CPU: AMD Phenom II x4 955BE @ 4GHz FAN: Arctic Cooling Freezer Xtreme rev.2
MB: MSI 760GM-E51
RAM: Kingston 2x4Gb RAM DDR3 1333 @ 1466MHz
GPU: Gigabyte Radeon HD 6850 OC 985/1260MHz
HDD: WD Caviar Green WD10EARX 1TB SATAIII/600, ZDROJ: Fortron FSP550-APN (550W)
Exp
Začátečník
Začátečník
Registrován: 24. črc 2004
Bydliště: Tábor
Kontaktovat uživatele:

Re: Jak vytvořit odpočet času

Příspěvek od Exp »

Zajímalo by mě jakej smysl má třeba tohle?

Kód: Vybrat vše

secLeft = secLeft;
1Pupik1989
Začátečník
Začátečník
Registrován: 20. říj 2011
Bydliště: Dvůr Králové nad Labem

Re: Jak vytvořit odpočet času

Příspěvek 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;
  }
};
CPU: AMD Phenom II x4 955BE @ 4GHz FAN: Arctic Cooling Freezer Xtreme rev.2
MB: MSI 760GM-E51
RAM: Kingston 2x4Gb RAM DDR3 1333 @ 1466MHz
GPU: Gigabyte Radeon HD 6850 OC 985/1260MHz
HDD: WD Caviar Green WD10EARX 1TB SATAIII/600, ZDROJ: Fortron FSP550-APN (550W)
Odpovědět

Zpět na „Programování a web“