Ver Mensaje Individual
  #12 (permalink)  
Antiguo 10/09/2009, 13:27
fermdp
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 5 meses
Puntos: 0
Respuesta: Como optimizar este script para sumar horas?

Muchísimas gracias a todos. Al final logre un mi cometido usando parte de las respuestas y soluciones dadas por ustedes, dado que la opción de realizar la suma con mysql no me parecía adecuada por ser muy compleja la consulta ue realizo y completa también la página y no quiero sumarle tarea a mysql para obtener el mejor tiempo posible en la respuesta, dado que muchas veces el resultado de la consulta es una cantidad impotante de datos y no quiero tener un cuello de botella en alguno de los procesos, me parece que esta opción que les muestro a modo de ejemplo cumple bien su cometido, este es el resultado:

Código javascript:
Ver original
  1. <html>
  2. <head>
  3.   <script language="JavaScript">
  4. <!--
  5. function padNmb(nStr, nLen){
  6.     var sRes = String(nStr);
  7.     var sCeros = "0000000000";
  8.     return sCeros.substr(0, nLen - sRes.length) + sRes;
  9.    }
  10.  
  11.    function stringToSeconds(tiempo){
  12.     var sep1 = tiempo.indexOf(":");
  13.     var sep2 = tiempo.lastIndexOf(":");
  14.     var hor = tiempo.substr(0, sep1);
  15.     var minu = tiempo.substr(sep1 + 1, sep2 - sep1 - 1);
  16.     var sec = tiempo.substr(sep2 + 1);
  17.     return (Number(sec) + (Number(minu) * 60) + (Number(hor) * 3600));
  18.    }
  19.  
  20.    function secondsToTime(secs){
  21.     var hor = Math.floor(secs / 3600);
  22.     var minu = Math.floor((secs - (hor * 3600)) / 60);
  23.     var sec = secs - (hor * 3600) - (minu * 60);
  24.     return padNmb(hor, 2) + ":" + padNmb(minu, 2) + ":" + padNmb(sec, 2);
  25.    }
  26.  
  27.  function sumaTiempos() {
  28.     var dev=0;
  29.     for(var i = 0; i < document.forms.formulario_horas.elements.length; i++)
  30.     if (document.forms.formulario_horas.elements[i].type == "text" &&
  31.             document.forms.formulario_horas.elements[i].name == "tiempo")
  32.         dev += stringToSeconds(document.forms.formulario_horas.elements[i].value);
  33.     return secondsToTime(dev);
  34. }
  35. function calcular() {  
  36.     document.getElementById("resultado").value = sumaTiempos();
  37.     return false;
  38. }
  39.  
  40. //-->
  41. </script>
  42. </head>
  43.  <body onLoad="calcular()">
  44.   <form name="formulario_horas">
  45.    Hora1 (hh:mm:ss): <input type="text" name="tiempo" value="12:30:15"><br>
  46.    Hora2 (hh:mm:ss): <input type="text" name="tiempo" value="3:41:18"><br>
  47.    Hora3 (hh:mm:ss): <input type="text" name="tiempo" value="3:42:18"><br>
  48.    Hora4 (hh:mm:ss): <input type="text" name="tiempo" value="3:49:18"><br>
  49.    Hora5 (hh:mm:ss): <input type="text" name="tiempo" value="1:44:18"><br>
  50.    Hora6 (hh:mm:ss): <input type="text" name="tiempo" value="00:00:1"><br>
  51.    Hora7 (hh:mm:ss): <input type="text" name="tiempo" value="00:00:00"><br>
  52.    Hora8 (hh:mm:ss): <input type="text" name="tiempo" value="00:00:14"><br>
  53.    <hr>
  54.    Suma (hh:mm:ss): <input type="text" name="resultado" id="resultado" value="">
  55.   </form>
  56. </body>
  57. </html>

Nuevamente muchisimas gracias a todos!
__________________
:) Fernando Dichiera (:
[email protected]

Última edición por fermdp; 11/09/2009 a las 17:09