Calculer la différence entre 2 dates en Javascript

Novembre 2012

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 !

3 commentaires :
commentaire n°2485 par Baltox
Baltox mercredi 6 février 2013, 00:43
Merci bcp c'est tout à fait ce que je cherchais !
commentaire n°3668 par izno
izno jeudi 28 juin 2018, 17:45
Console.log(dateDiff(new Date(2030,0,1), new Date(2030,7,15)).day)
renvoie 225 jours et Excel 226 !?
Qui a raison
commentaire n°4932 par CM Detector.
CM Detector. lundi 13 avril 2020, 19:48
C'est Excel qui doit avoir 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.
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré