246 votes

JavaScript - Obtenir les 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 ?

0 votes

S'agit-il d'objets datés ou de simples chaînes de caractères ? donnez un exemple de situation.

16voto

Marco Blos Points 360

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 changé pour d'autres paramètres, voir la documentation de 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.

EDIT :

mostDate et minorDate doivent être un type de moment.

EDIT 2 :

Pour ceux qui lisent ma réponse en 2020+, momentjs est maintenant un projet hérité.

Si vous êtes toujours à la recherche d'une bibliothèque connue pour faire ce travail, je vous recommande date-fns .

// How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?
var result = differenceInMinutes(
  new Date(2014, 6, 2, 12, 20, 0),
  new Date(2014, 6, 2, 12, 7, 59)
)
//=> 12

14voto

Tanzeem Bhatti Points 11

Vous pouvez procéder comme suit :

  1. Obtenez difference of dates (La différence sera en millisecondes)
  2. Convertir milliseconds en minutes i-e ms/1000/60

Le code :

let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");

let msDifference =  dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);

13voto

Rick Points 119

Pour ceux qui aiment travailler avec de petits chiffres

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

1voto

Derik J. Palacino Points 843

Voici un exemple où je me suis amusé à résoudre quelque chose de similaire dans node.

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

1voto

Anusha Bhat Points 141

Le code suivant a fonctionné pour moi,

function timeDiffCalc(dateNow,dateFuture) {
    var newYear1 = new Date(dateNow);
    var newYear2 = new Date(dateFuture);

        var dif = (newYear2 - newYear1);
        var dif = Math.round((dif/1000)/60);
        console.log(dif);

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X