Calculer la différence entre 2 dates en Javascript
En javascript il est assez facile de calculer la différence (nombre de jours, heures, minutes, secondes) entre deux dates :
date1 = new Date('2012-07-20 00:00:00'); date2 = new Date('2012-10-29 22:16:57'); tmp = date2 - date1
La variable tmp contient un entier, qui correspond au nombre de millisecondes entres les 2 dates.
Ensuite il ne reste plus qu'à utiliser les divisions et le modulo pour en extraire le nombre de secondes, minutes, heures et jours (1 jour = 24 heures, 1 heure = 60 minutes, 1 minute = 60 secondes) :
function dateDiff(date1, date2){ var diff = {} // Initialisation du retour var tmp = date2 - date1; tmp = Math.floor(tmp/1000); // Nombre de secondes entre les 2 dates diff.sec = tmp % 60; // Extraction du nombre de secondes tmp = Math.floor((tmp-diff.sec)/60); // Nombre de minutes (partie entière) diff.min = tmp % 60; // Extraction du nombre de minutes tmp = Math.floor((tmp-diff.min)/60); // Nombre d'heures (entières) diff.hour = tmp % 24; // Extraction du nombre d'heures tmp = Math.floor((tmp-diff.hour)/24); // Nombre de jours restants diff.day = tmp; return diff; }
Cette page peut vous intéresser : réafficher une colonne masquée dans excel à lire tout de suite !
Et voilà comment ça s'utilise :
date1 = new Date('2012-07-20 00:00:00'); date2 = new Date('2012-10-29 22:16:57'); diff = dateDiff(date1, date2); alert("Entre le "+date1.toString()+" et "+date2.toString()+" il y a "+diff.day+" jours, "+diff.hour+" heures, "+diff.min+" minutes et "+diff.sec+" secondes");
Encore faim ? allez lire ça : créer une citrouille pour halloween avec photoshop !
renvoie 225 jours et Excel 226 !?
Qui a raison
Cette fonction renvoie le même quantième pour les 28/03/2020 et 29/03/2020 par rapport au 01/01/2020.
Je préfère utiliser:
function dateDiff(d1, d2)
{
d1 = d1.getTime() / 86400000;
d2 = d2.getTime() / 86400000;
return new Number(d2 - d1).toFixed(0);
}
Cf. https://www.scriptol.fr/javascript/dates-difference.php
Cdlt.