Stopwatch time

3

I want to know how to implement time in my timer. The timer works, but the minutes go from 60, I need 60 minutes to be converted 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>
    
asked by anonymous 07.11.2017 / 12:51

2 answers

4

You can do with the same logic of minutes compared to seconds. A suggestion (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>
    
07.11.2017 / 13:03
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>
    
07.11.2017 / 13:58