Cita:
Iniciado por Alexis88 Claro que se puede:
Código Javascript
:
Ver originalvar hora1 = ("04:29:01").split(":"),
hora2 = ("03:28:56").split(":"),
t1 = new Date(),
t2 = new Date();
t1.setHours(hora1[0], hora1[1], hora1[2]);
t2.setHours(hora2[0], hora2[1], hora2[2]);
//Aquí hago la resta
t1.setHours(t1.getHours() - t2.getHours(), t1.getMinutes() - t2.getMinutes(), t1.getSeconds() - t2.getSeconds());
//Imprimo el resultado
document.body.innerHTML = "La diferencia es de: " + (t1.getHours() ? t1.getHours() + (t1.getHours() > 1 ? " horas" : " hora") : "") + (t1.getMinutes() ? ", " + t1.getMinutes() + (t1.getMinutes() > 1 ? " minutos" : " minuto") : "") + (t1.getSeconds() ? (t1.getHours() || t1.getMinutes() ? " y " : "") + t1.getSeconds() + (t1.getSeconds() > 1 ? " segundos" : " segundo") : "");
El resultado es:
Código HTML:
Ver originalLa diferencia es de: 1 hora y 5 segundos
Con tus datos, el resultado sería: "La diferencia es de: 5 segundos".
Tenemos inicialmente 2 horas con el formato
HH:MM:SS, a cada una la convierto en un array distinto, separando sus elementos desde el ":" que separa las horas de los minutos y segundos, además, creo dos objetos
Date para manipular las horas.
A cada objeto
Date, le asigno las horas, minutos y segundos que obtuve de cada una de las horas en cuestión, luego, asigno al primer objeto sus nuevos componentes de horas, minutos y segundos, que no son otros que la resta de las horas, minutos y segundos del primer objeto con el segundo. Finalmente, imprimo la diferencia.
Así es como se ve en ejecución:
http://jsfiddle.net/pwYG8/
La línea de código de la impresión del resultado es un poco larga porque acomodo las palabras que se mostrarán según el valor de cada parte del objeto
Date, para que cuando haya una hora, un minuto o un segundo en el resultado, se muestre de esa forma y no "1 segundos", por ejemplo.
Saludos
Muchas gracias Alexis, muy buena explicación, gracias por tu tiempo.
Sólo una pregunta, cuando usas la función new Date(), estás creando una variable de fecha, con formato completo. Si las dos Dates tienen un día distinto, la diferencia seguirá siendo sólo de la hora, o también de la fecha? Ej: 1 día y 30 segundos de diferencia...
Editado: No sé si me he explicado bien antes, me refiero a esto:
FECHA1: 13 Febrero, 23:59:59
FECHA2: 14 Febrero, 00:00:02
La diferencia sería de 3 segundos? O sería de 1 día y 3 segundos?
Gracias, un saludo!