Ver Mensaje Individual
  #8 (permalink)  
Antiguo 24/03/2015, 14:10
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: multiplicar, dividir horas y minutos con javascript

Para el cálculo de horas, solo resta la hora final menos la hora inicial y multiplica el resultado por la cantidad de días trabajados. Para los minutos, multiplica la hora final por 60 (1 hora = 60 minutos) y súmale los minutos de dicha hora, luego, haz lo mismo con la hora inicial, resta ambas cantidad (final - inicial) y multiplica el resultado por la cantidad de días trabajados.

Como no puede haber más de 59 minutos en la visualización de la hora, utiliza un bucle mediante el cual irás restando 60 a la cantidad total de minutos hasta que esta sea menor o igual a 59 y por cada resta, suma una hora al total de horas.

Un ejemplo:

Código Javascript:
Ver original
  1. var horaInicio = "08:30",
  2.     horaFin = "12:50",
  3.     cantidadDias = 4,
  4.     tiempoIni = horaInicio.split(":"),
  5.     tiempoFin = horaFin.split(":"),
  6.     horasIni = parseInt(tiempoIni[0]),
  7.     minutosIni = parseInt(tiempoIni[1]),
  8.     horasFin = parseInt(tiempoFin[0]),
  9.     minutosFin = parseInt(tiempoFin[1]),
  10.     horas = (horasFin - horasIni) * cantidadDias,
  11.     minutos = (
  12.         (horasFin * 60 + minutosFin) - (horasIni * 60 + minutosIni)
  13.     ) * cantidadDias;
  14.  
  15. while (minutos > 59){
  16.     minutos -= 60;
  17.     horas++;   
  18. }
  19.  
  20. console.log("El total de tiempo de trabajo es de " + horas + ":" + minutos); //33:20

La aplicación de la función parseInt, se debe a que cualquier valor obtenido de una caja de texto, es una cadena, por lo cual, primero debo de darle un formato numérico para poder operar con esas cifras.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 24/03/2015 a las 14:23 Razón: Impresión de la respuesta