JavaScript – Obtenez des minutes entre deux dates

Si j'ai deux dates, comment puis-je utiliser JavaScript pour trouver la différence entre les deux dates en quelques minutes?

Vous pouvez cocher ce code:

var today = new Date(); var Christmas = new Date("12-25-2012"); var diffMs = (Christmas - today); // milliseconds between now & Christmas var diffDays = Math.floor(diffMs / 86400000); // days var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)"); 

Ou var diffMins = Math.floor((... pour ignorer les secondes si vous ne souhaitez pas arrondir les minutes.

En soustrayant 2 objets Date vous donne la différence en millisecondes, par exemple:

 var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00')); 

Math.abs est utilisé pour pouvoir utiliser la différence absolue (donc new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00') donne le même résultat).

La division du résultat par 1000 vous donne le nombre de secondes. Dividir que par 60 vous donne le nombre de minutes. Pour Math.floor à toutes les minutes, utilisez Math.floor ou Math.ceil :

 var minutes = Math.floor((diff/1000)/60); 

Dans cet exemple, le résultat sera 720

 var startTime = new Date('2012/10/09 12:00'); var endTime = new Date('2013/10/09 12:00'); var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds var resultInMinutes = Math.round(difference / 60000); 

Une fonction simple pour effectuer ce calcul:

 function getMinutesBetweenDates(startDate, endDate) { var diff = endDate.getTime() - startDate.getTime(); return (diff / 60000); } 

Ce problème est résolu facilement avec moment.js, comme cet exemple:

var difference = mostDate.diff(minorDate, "minutes");

Le deuxième paramètre peut être modifié pour d'autres paramètres, voir la documentation moment.js.

Par exemple: "jours", "heures", "minutes", etc.

http://momentjs.com/docs/

Le CDN pour moment.js est disponible ici:

https://cdnjs.com/libraries/moment.js

Merci.

MODIFIER:

MostDate et minorDate devraient être un type de moment.

Pour ceux qui aiment travailler avec de petits nombres

 const today = new Date(); const endDate = new Date(startDate.setDate(startDate.getDate() + 7)); const days = parseInt((endDate - today) / (1000 * 60 * 60 * 24)); const hours = parseInt(Math.abs(endDate - today) / (1000 * 60 * 60) % 24); const minutes = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000 * 60) % 60); const seconds = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000) % 60);