A função abaixo tem o objetivo de somar duas horas passadas para ela, com a opção de zerar a hora após as 23 horas ou seguir a diante.

  1. function somaHora(hrA, hrB, zerarHora) {
  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 > 59) {
  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 > 23 && zerarHora) {
  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 = somaHora("12:00", "02:27", false);
  2. novaHora -> "14:27"
  3.  
  4. novaHora = somaHora("22:50", "05:10", true);
  5. novaHora -> "04:00"
  6.  
  7. novaHora = somaHora("22:50", "05:10", false);
  8. novaHora -> "28:00"