Foros del Web » Programando para Internet » Javascript »

como puedo sacar la diferencia en horas

Estas en el tema de como puedo sacar la diferencia en horas en el foro de Javascript en Foros del Web. Como puedo calcular la resta de dos horas introducidas por el usuario y que el resultado sea formatdo horas minutos y segundos gracias...
  #1 (permalink)  
Antiguo 06/03/2002, 19:34
 
Fecha de Ingreso: marzo-2002
Mensajes: 2
Antigüedad: 22 años, 8 meses
Puntos: 0
como puedo sacar la diferencia en horas

Como puedo calcular la resta de dos horas introducidas por el usuario y que el resultado sea formatdo horas minutos y segundos
gracias
  #2 (permalink)  
Antiguo 06/03/2002, 22:40
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 10 meses
Puntos: 38
Re: como puedo sacar la diferencia en horas

Hola rmbdcn01.

Te preparé el siguiente ejemplo, debes tener ya las horas validadas, ya que sino la resta puede dar cualquier cosa. Asume entradas separadas por ":", ejemplos 11:22:32 o 1:15:30 o hasta 22:1:1. Asume hora militar y asume también primera hora mayor o igual que segunda.

Si no puedes garantizar alguna de esas condiciones, se podría arreglar igualmente.

Espero te sirva:

Código:
<html>
<head>
 <script language="JavaScript">

  function padNmb(nStr, nLen){
   var sRes = String(nStr);
   var sCeros = "0000000000";
   return sCeros.substr(0, nLen - sRes.length) + sRes;
  }

  function stringToSeconds(tiempo){
   var sep1 = tiempo.indexOf(":");
   var sep2 = tiempo.lastIndexOf(":");
   var hor = tiempo.substr(0, sep1);
   var min = tiempo.substr(sep1 + 1, sep2 - sep1 - 1);
   var sec = tiempo.substr(sep2 + 1);
   return (Number(sec) + (Number(min) * 60) + (Number(hor) * 3600));
  }

  function secondsToTime(secs){
   var hor = Math.floor(secs / 3600);
   var min = Math.floor((secs - (hor * 3600)) / 60);
   var sec = secs - (hor * 3600) - (min * 60);
   return padNmb(hor, 2) + ":" + padNmb(min, 2) + ":" + padNmb(sec, 2);
  }

  function substractTimes(t1, t2){
   var secs1 = stringToSeconds(t1);
   var secs2 = stringToSeconds(t2);
   var secsDif = secs1 - secs2;
   return secondsToTime(secsDif);
  }

  function calcT3(){
   document.formulario.t3.value = substractTimes(document.formulario.t1.value, document.formulario.t2.value)
  }

 </script>
</head>
<body>
 <form name="formulario">
 Hora1 (hh:mm:ss): <input type="text" name="t1" value="12:30:15"><br>
 Hora2 (hh:mm:ss): <input type="text" name="t2" value="3:40:18"><br>
 <hr>
 Resta (hh:mm:ss): <input type="text" name="t3" value=""><br><br>
 <input type="button" onclick="calcT3()" value="Restar">
 </form>
</body>
</html>
Suerte
  #3 (permalink)  
Antiguo 07/03/2002, 23:47
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 10 meses
Puntos: 38
Re: como puedo sacar la diferencia en horas

¿Te sirvió?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.