Subtrair horas com JS

A função abaixo tem o objetivo de subtrair duas horas passadas para ela.

  1. function subtraiHora(hrA, hrB) {
  2.         if(hrA.length != 5 || hrB.length != 5) return "00:00";
  3.        
  4.         temp = 0;
  5.         nova_h = 0;
  6.         novo_m = 0;
  7.  
  8.         hora1 = hrA.substr(0, 2) * 1;
  9.         hora2 = hrB.substr(0, 2) * 1;
  10.         minu1 = hrA.substr(3, 2) * 1;
  11.         minu2 = hrB.substr(3, 2) * 1;
  12.        
  13.         temp = minu1 – minu2;
  14.         while(temp < 0) {
  15.                 nova_h++;
  16.                 temp = temp + 60;
  17.         }
  18.         novo_m = temp.toString().length == 2 ? temp : ("0" + temp);
  19.  
  20.         temp = hora1 – hora2 – nova_h;
  21.         while(temp < 0) {
  22.                 temp = temp + 24;
  23.         }
  24.         nova_h = temp.toString().length == 2 ? temp : ("0" + temp);
  25.  
  26.         return nova_h + ‘:’ + novo_m;
  27. }

Como usar:

  1. novaHora = subtraiHora("12:00", "02:27");
  2. novaHora -> "09:33"

Comments

4 Responses to “Subtrair horas com JS”

  1. Monique Boueri on maio 28th, 2014 15:14

    O seu algoritmo não atendia das 07:30 as 19:00, então adicionei mais uma verificação antes do while
    temp = minu1 – minu2;
    if(minu2 < minu1){
    nova_h++;
    temp = 60 – temp;
    }else {
    while(temp < 0) {
    nova_h++;
    temp = temp + 60;
    }
    }
    Só que agora ainda não atende 07:30 até 18:30 que é 11:00. Obrigada.

  2. Cesar Bagatoli on junho 3rd, 2014 15:30

    Olá Monique, para utilizar a função você deve colocar a maior hora por primeiro, ou seja, se você quiser subtrair 7:30 de 19:00 você utiliza subtraiHora(“19:00”, “07:30”), pois se você passar “07:30” no primeiro parâmetro a função irá tirar 19 horas das 07:30 que você passou, ou seja, pra utilizá-la tenha em mente subtraiHora(HoraOndeAplicarASubtração, HorasQueSeraoSubtraidasDaHoraDoPrimeiroParametro).

    Obrigado.

  3. Ronaldo Pires on janeiro 28th, 2019 11:46

    E como faria para somar?

  4. Cesar Bagatoli on janeiro 28th, 2019 16:19

    Olá Ronaldo, obrigado por visitar o site, para somar também está aqui no meu site, podes acessar pelo link http://www.cesar.inf.br/blog/?p=249

Leave a Reply