Si tengo dos fechas, ¿cómo puedo usar JavaScript para obtener la diferencia entre las dos fechas en minutos?
Si tengo dos fechas, ¿cómo puedo usar JavaScript para obtener la diferencia entre las dos fechas en minutos?
Respuestas:
Puede verificar este código:
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((...descartar segundos si no desea redondear los minutos.
Math.round(((diffMs % 86400000) % 3600000) / 60000);no funciona cuando la diferencia es mayor a 60 minutos
Restar 2 objetos Date le da la diferencia en milisegundos, por ejemplo:
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.absse usa para poder usar la diferencia absoluta (por lo que new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')da el mismo resultado).
Dividir el resultado entre 1000 te da la cantidad de segundos. Dividir eso entre 60 te da la cantidad de minutos. Para redondear a minutos enteros, use Math.flooro Math.ceil:
var minutes = Math.floor((diff/1000)/60);
En este ejemplo, el resultado será 720
(Math.floor(seconds/60))+':'+((seconds/60)%60)si necesita los segundos restantes también
new Date(string)con un formato que no sea una cadena de formato ISO-8601. Consulte ¿Por qué Date.parse da resultados incorrectos? , o simplemente use números (por ejemplo, new Date(2011, 9, 9, 12, 0, 0)solo recuerde que los meses están basados en 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 que no sea una cadena de formato ISO-8601. Consulte ¿Por qué Date.parse da resultados incorrectos? , o simplemente use números (por ejemplo, new Date(2011, 9, 9, 12, 0, 0)solo recuerde que los meses están basados en 0).
Una función simple para realizar este cálculo:
function getMinutesBetweenDates(startDate, endDate) {
var diff = endDate.getTime() - startDate.getTime();
return (diff / 60000);
}
Eso debería mostrar la diferencia entre las dos fechas en minutos. Pruébalo en tu navegador:
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
Para aquellos que les gusta trabajar con números pequeños.
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);
Este problema se resuelve fácilmente con moment.js, como este ejemplo:
var difference = mostDate.diff(minorDate, "minutes");
El segundo parámetro se puede cambiar por otros parámetros, consulte la documentación de moment.js.
por ejemplo: "días", "horas", "minutos", etc.
El CDN para moment.js está disponible aquí:
https://cdnjs.com/libraries/moment.js
Gracias.
EDITAR:
mostDate y minorDate deberían ser un tipo de momento.
Aquí hay algo de diversión que tuve resolviendo algo similar en el 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
*/
Puede verlo en acción en https://repl.it/@GioCirque/TimeSpan-Formatting
El siguiente código funcionó para mí,
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);
}
Puedes hacer lo siguiente:
difference of dates(la diferencia será en milisegundos)millisecondsen minutesiems/1000/60El código:
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);