Se ho due date, come posso usare JavaScript per ottenere la differenza tra le due date in minuti?
Se ho due date, come posso usare JavaScript per ottenere la differenza tra le due date in minuti?
Risposte:
Puoi controllare questo codice:
var today = new Date();
var Christmas = new Date("2012-12-25");
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 =)");
o var diffMins = Math.floor((...scartare i secondi se non si desidera arrotondare i minuti.
Math.round(((diffMs % 86400000) % 3600000) / 60000);non funziona quando la differenza è maggiore di 60 minuti
Sottraendo 2 oggetti Data si ottiene la differenza in millisecondi, ad esempio:
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.absè usato per essere in grado di usare la differenza assoluta (quindi new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')dà lo stesso risultato).
Dividere il risultato per 1000 ti dà il numero di secondi. Dividendolo per 60 ti dà il numero di minuti. Per arrotondare a minuti interi, utilizzare Math.flooro Math.ceil:
var minutes = Math.floor((diff/1000)/60);
In questo esempio il risultato sarà 720
(Math.floor(seconds/60))+':'+((seconds/60)%60)se hai bisogno anche dei restanti secondi
new Date(string)con un formato diverso da una stringa di formato ISO-8601. Vedi Perché Date.parse dà risultati errati? , o semplicemente usa i numeri (es., new Date(2011, 9, 9, 12, 0, 0)ricorda solo che i mesi sono basati su 0).
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);
new Date(string)con un formato diverso da una stringa di formato ISO-8601. Vedi Perché Date.parse dà risultati errati? , o semplicemente usa i numeri (es., new Date(2011, 9, 9, 12, 0, 0)ricorda solo che i mesi sono basati su 0).
Una semplice funzione per eseguire questo calcolo:
function getMinutesBetweenDates(startDate, endDate) {
var diff = endDate.getTime() - startDate.getTime();
return (diff / 60000);
}
Questo dovrebbe mostrare la differenza tra le due date in minuti. Provalo nel tuo browser:
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
(currDate.getTime() - oldDate.getTime()) / 60000
Per quelli a cui piace lavorare con piccoli numeri
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);
Questo problema viene risolto facilmente con moment.js, come in questo esempio:
var difference = mostDate.diff(minorDate, "minutes");
Il secondo parametro può essere modificato per altri parametri, consultare la documentazione di moment.js.
ad esempio: "giorni", "ore", "minuti", ecc.
Il CDN per moment.js è disponibile qui:
https://cdnjs.com/libraries/moment.js
Grazie.
MODIFICARE:
mostDate e minorDate dovrebbero essere un tipo di momento.
Ecco un po 'di divertimento che ho risolto qualcosa di simile nel nodo.
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
*/
Puoi vederlo in azione su https://repl.it/@GioCirque/TimeSpan-Formatting
Il seguente codice ha funzionato per me,
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);
}
Puoi fare come segue:
difference of dates(la differenza sarà in millisecondi)millisecondsin minutesiems/1000/60Il codice:
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);