Time on stopwatch

Asked

Viewed 124 times

3

I wonder how to implement time on my stopwatch. The timer works, but the minutes pass 60, I need to pass 60 minutes there is a conversion to hours.

   <script>
        // Tempo em segundos
        var credito = 7200 ;
        var tempo = credito;

    function stopTimer() {
        clearTimeout(countdownTimer)
    }

    function floor(x) {
        return x | 0;
    }

    function pad(n) {
        if (n < 0) {
            n = -n;
        }
        if (n < 10) {
            return '0' + n.toString();
        }
        return n.toString(); 
    }
    function segundosPassados() {
        var minutos = pad(floor(tempo/60));
        if (tempo < 0) {
            minutos = '-' + minutos;
        }
        var segundosRestantes = pad(tempo % 60);    

        document.getElementById('countdown').innerHTML = minutos + ":" + 
        segundosRestantes;

        if (tempo > 0) {
             tempo--;
        }
    }
   </script>

2 answers

4


You can do it with the same minute logic relative to seconds. A hint (with some code changes):

// Tempo em segundos
var credito = 7200;
var countdownTimer;

function stopTimer() {
  clearTimeout(countdownTimer)
}

function pad(n) {
  return String('0' + n).slice(-2);
}

function segundosPassados(tempo) {
  var minutos = Math.floor(tempo / 60);
  var horas = Math.floor(minutos / 60);
  var segundos = tempo % 60;
  var mostrador = [
    horas, minutos, segundos
  ].map(pad).join(':');


  document.getElementById('countdown').innerHTML = mostrador;

  if (tempo > 0) countdownTimer = setTimeout(() => segundosPassados(tempo - 1), 1000);
}

segundosPassados(credito);
<div id="countdown"></div>

2

A suggestion using 2 functions:

var credito = 7200; // tempo em segundos

function contador(t){
    var temps = t, mins, segs;
    var countdownTimer = setInterval(function(){
        hors = parseInt((temps/60)/60);
        mins = parseInt((temps/60)%60);
        segs = parseInt(temps%60);

        mins = mins < 10 ? "0" + mins : mins;
        segs = segs < 10 ? "0" + segs : segs;
        hors = hors < 10 ? "0" + hors : hors;

        document.getElementById("countdown").textContent = hors + ":"+ mins +":"+ segs;

        if(--temps < 0){
            temps = t;
            clearTimeout(countdownTimer);
        }
    }, 1000);
}

contador(credito);
<div id="countdown"></div>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.