2016-03-19 16 views
4

Ich habe ein JavaScript-Timing-Event mit einer Endlosschleife mit Stop-Taste.Sekunden in Tage, Stunden, Minuten und Sekunden umrechnen

Es wird Zahlen angezeigt, wenn Start-Taste ist click.Now ich diese Zahlen etwas wie 4 Stunden, 3 Minuten umgewandelt wollen, 50 Sekunden

html

<p class="start">Start</p> 
    <p class="end">End</p> 
    <p class="hide_div"> 
    <input type="text" id="txt" />//display numbers eg 12345 
</p> 

css

.hide_div { 
     display: none; 
    } 
    .end { 
     display: none; 
    } 

js

<script> 
    $(".start").on("click", function() { 
     //var start = $.now(); 
     //alert(start); 
     //console.log(start); 
     doTimer(); 
     $(".end").show(); 
     $(".hide_div").show(); 
    }); 
    $(".end").on("click", function() { 
     stopCount(); 
    }); 
</script> 
<script> 
    var c=0; 
    var t; 
    var timer_is_on=0; 

    function timedCount() 
    { 
     document.getElementById('txt').value=c; 
     c=c+1; 
     t=setTimeout(function(){timedCount()},1000); 
    } 

    function doTimer() 
    { 
     if (!timer_is_on) 
      { 
      timer_is_on=1; 
      timedCount(); 
     } 
    } 

    function stopCount() 
    { 
     clearTimeout(t); 
     timer_is_on=0; 

    } 

Wie konvertiert man Zahlen wie 123456 in 1 Tag, 4 Stunden, 40 Minuten, 45 Sekunden?

+0

Sie gelöst sein würden ? – C2486

Antwort

0

Sie werden wahrscheinlich Epoche Zeitstempel einfacher finden mit: Wie hier Convert a Unix timestamp to time in JavaScript detailliert, ist die grundlegende Methode, wie so:

    <script> 

        // Create a new JavaScript Date object based on the timestamp 
          // multiplied by 1000 so that the argument is in milliseconds, not seconds. 
          var date1 = new Date(); 

          alert ('easy trick to waste a few seconds...' + date1); 


          // var date = date2 - date1; 

          // Hours part from the timestamp 
          var hours1 = date1.getHours(); 
          // Minutes part from the timestamp 
          var minutes1 = "0" + date1.getMinutes(); 
          // Seconds part from the timestamp 
          var seconds1 = "0" + date1.getSeconds(); 



          var date2 = new Date(); 

          // Hours part from the timestamp 
          var hours2 = date2.getHours(); 
          // Minutes part from the timestamp 
          var minutes2 = "0" + date2.getMinutes(); 
          // Seconds part from the timestamp 
          var seconds2 = "0" + date2.getSeconds(); 



          // Will display time in 10:30:23 format 
          // var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2); 


          var elapsedHrs = hours2 - hours1; 
          var elapsedMin = minutes2.substr(-2) -minutes1.substr(-2); 
          var elapsedSec = seconds2.substr(-2) - seconds1.substr(-2);         

          var elapsedTime = elapsedHrs + ' hours, ' + elapsedMin + ' minutes, ' + elapsedSec + ' seconds'; 

          alert ('time between timestamps: ' + elapsedTime); 

        </script> 

Seien Sie gewarnt, dass dieses Skript für jetzt einige Arbeit braucht, da sie negative Werte geben für Dinge wie date1 = 12:00:00 und date2 = 12:00:05, aber das überlasse ich dir jetzt. Sie sollten Ihren Code neu schreiben, um einen Zeitstempel (var x = new Date();) am Anfang Ihres Timers und einen, wenn Sie fertig sind/wollen die abgelaufene Zeit zu überprüfen, und subtrahieren Sie die beiden vor dem Analysieren verstrichenen Sekunden, Minuten , Stunden usw. nach Bedarf.

7

Verwenden Math wie diese Weise ist Second param in parseInt für Basis, die

var seconds = parseInt(123456, 10); 
 

 
var days = Math.floor(seconds/(3600*24)); 
 
seconds -= days*3600*24; 
 
var hrs = Math.floor(seconds/3600); 
 
seconds -= hrs*3600; 
 
var mnts = Math.floor(seconds/60); 
 
seconds -= mnts*60; 
 
console.log(days+" days, "+hrs+" Hrs, "+mnts+" Minutes, "+seconds+" Seconds");

Ihre angegebene Sekunden 123456 dieses Problem ist optional 1 days, 10 Hrs, 17 Minutes, 36 Seconds nicht 1 days, 4 Hrs, 40 Minutes, 45 Seconds

Verwandte Themen