Si j'ai deux dates, comment puis-je utiliser JavaScript pour obtenir la différence entre les deux dates en minutes?
Vous pouvez commander 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 supprimer les secondes si vous ne souhaitez pas arrondir les minutes.
La soustraction de 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).
En divisant le résultat par 1000, vous obtenez le nombre de secondes. En divisant par 60, vous obtenez le nombre de minutes. Pour arrondir aux minutes entières, 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);
}
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);
Cela devrait montrer la différence entre les deux dates en minutes.
const currDate = new Date('Tue Feb 13 2018 13:04:58 GMT+0200 (EET)')
const oldDate = new Date('Tue Feb 13 2018 12:00:58 GMT+0200 (EET)')
(currDate - oldDate) / 60000 # 64.0026
Voici du plaisir que j'ai eu à résoudre quelque chose de similaire dans le noeud.
function formatTimeDiff(date1, date2) {
return Array(3)
.fill([3600, date1.getTime() - date2.getTime()])
.map((v, i, a) => {
a[i+1] = [a[i][0]/60, ((v[1] / (v[0] * 1000)) % 1) * (v[0] * 1000)];
return `0${Math.floor(v[1] / (v[0] * 1000))}`.slice(-2);
}).join(':');
}
const millis = 1000;
const utcEnd = new Date(1541424202 * millis);
const utcStart = new Date(1541389579 * millis);
const utcDiff = formatTimeDiff(utcEnd, utcStart);
console.log(`Dates:
Start : ${utcStart}
Stop : ${utcEnd}
Elapsed : ${utcDiff}
`);
/*
Outputs:
Dates:
Start : Mon Nov 05 2018 03:46:19 GMT+0000 (UTC)
Stop : Mon Nov 05 2018 13:23:22 GMT+0000 (UTC)
Elapsed : 09:37:02
*/
Vous pouvez le voir en action à https://repl.it/@GioCirque/TimeSpan-Formatting