Si j'ai deux dates, comment puis-je utiliser JavaScript pour obtenir la différence entre les deux dates en minutes ?
Réponses
Trop de publicités?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.
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
Vous pouvez procéder comme suit :
- Obtenez
difference of dates
(La différence sera en millisecondes) - Convertir
milliseconds
enminutes
i-ems/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);
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);
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
- Réponses précédentes
- Plus de réponses
0 votes
S'agit-il d'objets datés ou de simples chaînes de caractères ? donnez un exemple de situation.