Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] jetzt Zeit - start Zeit = verstrichene Zeit :)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] jetzt Zeit - start Zeit = verstrichene Zeit :)

    Hallo miteinander. Ich probiere mich seit geraumer Zeit mit einem kleinen Timer der die abgelaufene Zeit anzeigt. Bei dem Timer kann man eine eine Startzeit in HH:MM:SS vorgeben und diese wird dann von der Aktuellen Uhrzeit an nach oben gezählt. Soweit Funktioniert das ganze auch bis auf die Tatsache das ich bei der Funktion den Fehler habe das er immer wieder die Startzeit berechnet so passiert es das er mitten drin nicht hoch zählt sondern einen negativen Wert zeigt und diesen dann bis 0 hoch zählt.

    So zählt er richtig:



    aber sobald er die zb. Sekunden der Startzeit erreicht hat macht er einen minus Wert daraus:


    Meine Frage dazu :

    Wie kann ich zb. intSekunde sagen das es sich nur einmal aus intSekunde_ - StartSekunde berechnen soll und danach der Wert Statisch bleibt.

    Derzeit, wenn ich das richtig verstanden habe, ist es ja so das es bei jedem durchlauf sich neu berechnet.


    Code:
    function tick() {
    		
    	var stunde, minute, sekunde;
    	var intStunde, intMinute, intSekunde;
    
    	var jetzt = new Date();
    	var intStunde_ = jetzt.getHours();
    	var intMinute_ = jetzt.getMinutes();
    	var intSekunde_ = jetzt.getSeconds();
    	var intMilliSekunde_ = jetzt.getMilliseconds();
    	
    	var	intTag_ = jetzt.getDate();
    	var	intMonat_ = jetzt.getMonth()+1;
    	var	intJahr_ = jetzt.getFullYear();
    	
    	var	intTag = (intTag_ - StartTag);
    	var	intStunde = (intStunde_ - StartStunde);
    	var	intMinute = (intMinute_ - StartMinute);
    	var	intSekunde = (intSekunde_ - StartSekunde);
    
    	if (intTag_ < 0) {
    		intTag = 24-(intTag * -1);
    	}
    
    	if (intStunde_ < 0) {
    		intStunde = 24-(intStunde * -1);
    		intTag = intTag -1;
    	}
    
    	if (intMinute_ < 0) {
    		intMinute = 60-(intMinute * -1);
    		intStunde = intStunde -1;
    	}		
    
    	if (intSekunde_ < 0) {
    		intSekunde = 60-(intSekunde * -1);
    		intMinute = intMinute -1;
    	}
    
    /*------- wenn wert nur einstellig dann stelle 0 vorran ------------------*/
    
    	if (intStunde < 10) {
    		stunde = '0'+intStunde;
    	}
    	else {
    		stunde = intStunde;
    	}
    	
    	if (intMinute < 10) {
    		minute = '0'+intMinute;
    	}
    	else {
    		minute = intMinute;
    	}
    	
    	if (intSekunde < 10) {
    		sekunde = '0'+intSekunde;
    	}
    	else {
    		sekunde = intSekunde;
    	}
    
    	timeString = intTag+":"+stunde+":"+minute+":"+sekunde;
    		Clock.innerHTML=timeString;
    
    		window.setTimeout('tick();', 1000);
    }
    	window.onload = tick;

  • #2
    So funktioniert das aber nicht. Du betrachtest Stunden, Minuten und Sekunde gesondert, das ist falsch.

    Rechne alles in Sekunden um, subtrahiere, rechne das Ergebnis wieder in Stunden, Minuten und Sekunden um.

    Date.valueOf() hilft dir dabei (Achtung, Angabe in Millisekunden)
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Danke dir für die Antwort werde ich Morgen gleich mal ran das ganze umsetzen.

      Kommentar


      • #4
        Und schau ma hier vorbei: http://momentjs.com/
        I like cooking my family and my pets.
        Use commas. Don't be a psycho.
        [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

        Kommentar


        • #5
          Ich habe es derweil so gelöst:

          Code:
          function fuehrendeNull(wert) {
          	  if (wert<10) return "0" + parseInt(wert);
          	  else return parseInt(wert);
          	}
          	
          function tick(Sekundenzahl) {
          
          var jetzt = new Date();
          var intStunde_ = jetzt.getHours();
          var intMinute_ = jetzt.getMinutes();
          var intSekunde_ = jetzt.getSeconds();
          var intTag_ = jetzt.getDate();
          
          sjetztzeit = Math.floor(intSekunde_);
          mjetztzeit = Math.floor(intMinute_) *60;  // *60=sek
          hjetztzeit = Math.floor(intStunde_) *60 *60;  // *60=min *60=sek
          djetztzeit = Math.floor(intTag_) *24 *60 *60; // *24=std *60=min *60=sek
          
          sstartzeit = Math.floor(StartSekunde) + 2;  // + 2 sek durch script verzögerung
          mstartzeit = Math.floor(StartMinute) *60;  // *60=sek
          hstartzeit = Math.floor(StartStunde) *60 *60;  // *60=min *60=sek
          dstartzeit = Math.floor(StartTag) *24 *60 *60; // *24=std *60=min *60=sek
          
          
          jetztzeit = djetztzeit + hjetztzeit + mjetztzeit + sjetztzeit				
          startzeit = dstartzeit + hstartzeit + mstartzeit + sstartzeit
          
          countertime = jetztzeit - startzeit;
          
          Sekundenzahl = Math.abs(countertime)
          
          	timeString = fuehrendeNull (parseInt(Sekundenzahl/60/60/24))+ ":"  //Tage
          		  + fuehrendeNull ((Sekundenzahl/60/60)%24) + ":"   // Stunden
          		  + fuehrendeNull ((Sekundenzahl/60)%60) + ":"   // Minuten
          		  + fuehrendeNull (Sekundenzahl%60);  //Sekunden
          				 
          			Clock.innerHTML=timeString;
          			window.setTimeout('tick();', 1000);
          }
          	window.onload = tick;
          Soweit so gut . Danke schon mal für eure Hilfe. So wie man sieht habe ich nun alles berücksichtigt bis auf den Monat und das Jahr und genau da habe ich keine Idee wie ich das bewerkstelligen soll. Wie kann ich die Differenz zwischen Monaten und Jahren bestimmen?

          Kommentar

          Lädt...
          X