web-dev-qa-db-fra.com

JavaScript - Obtenez des minutes entre deux dates

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

101
John

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.

158
Darin Dimitrov

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

128
KooiInc
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);
37
MrGorki

Une fonction simple pour effectuer ce calcul:

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

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); 
8
Rick

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
6
Alex P

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

0
Gio Palacino