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.
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);