javascript - ¿Cómo obtener la diferencia en horas entre dos objetos de fecha?
Tengo dos objetos Date y quiero calcular la diferencia en horas.
Si la diferencia en horas es menor a 18 horas, quiero agregar el objeto de fecha a un arreglo.
Javascript/jQuery, realmente no importa; lo que funcione mejor servirá.
Respuesta #1
La forma más sencilla sería restar directamente los objetos de fecha entre sí.
Por ejemplo:
var hours = Math.abs(date1 - date2) / 36e5;
La resta devuelve la diferencia entre las dos fechas en milisegundos. 36e5 es la notación científica de 60*60*1000, dividir por esto convierte la diferencia en milisegundos a horas.
Respuesta #2
Intenta usar getTime (doc de MDN):
var diff = Math.abs(date1.getTime() - date2.getTime()) / 3600000;
if (diff < 18) { /* do something */ }
Usando Math.abs() no sabemos qué fecha es la más pequeña. Este código probablemente sea más relevante:
var diff = (date1 - date2) / 3600000;
if (diff < 18) { array.push(date1); }
Respuesta #3
Usa la marca de tiempo que obtienes llamando a valueOf en el objeto de fecha:
var diff = date2.valueOf() - date1.valueOf();
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours
