web-dev-qa-db-fra.com

Comment obtenir la différence d'heures entre deux objets de date?

J'ai deux objets Date et je veux calculer la différence en heures.

Si la différence d'heures est inférieure à 18 heures, je souhaite déplacer l'objet Date dans un tableau.

Javascript/jQuery n'a pas vraiment d'importance; ce qui fonctionne le mieux fera.

66
Anoniem Anoniem

Le moyen le plus simple serait de soustraire directement les objets de date les uns des autres.

Par exemple:

var hours = Math.abs(date1 - date2) / 36e5;

La soustraction renvoie la différence entre les deux dates en millisecondes. 36e5 est la notation scientifique pour 60*60*1000, divisant par lequel convertit la différence en millisecondes en heures.

168
Boaz

Essayez d’utiliser getTime ( mdn doc ):

var diff = Math.abs(date1.getTime() - date2.getTime()) / 3600000;
if (diff < 18) { /* do something */ }

En utilisant Math.abs(), nous ne savons pas quelle date est la plus petite. Ce code est probablement plus pertinent:

var diff = (date1 - date2) / 3600000;
if (diff < 18) { array.Push(date1); }
34
leaf

Utilisez l'horodatage que vous obtenez en appelant valueOf sur l'objet de date:

var diff = date2.valueOf() - date1.valueOf();
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours
3
Matt Zeunert