Jeśli mam dwie daty, w jaki sposób mogę użyć JavaScript, aby uzyskać różnicę między nimi w minutach?
Jeśli mam dwie daty, w jaki sposób mogę użyć JavaScript, aby uzyskać różnicę między nimi w minutach?
Odpowiedzi:
Możesz sprawdzić ten kod:
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 =)");
lub var diffMins = Math.floor((...
odrzucić sekundy, jeśli nie chcesz zaokrąglać minut.
Math.round(((diffMs % 86400000) % 3600000) / 60000);
nie działa, gdy różnica jest większa niż 60 minut
Odejmowanie 2 obiektów Date daje różnicę w milisekundach, np .:
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.abs
jest używany, aby móc użyć różnicy bezwzględnej (więc new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')
daje ten sam wynik).
Dzieląc wynik przez 1000, otrzymujesz liczbę sekund. Dzieląc to przez 60, otrzymujesz liczbę minut. Aby zaokrąglić do całych minut, użyj Math.floor
lub Math.ceil
:
var minutes = Math.floor((diff/1000)/60);
W tym przykładzie wynikiem będzie 720
(Math.floor(seconds/60))+':'+((seconds/60)%60)
jeśli potrzebujesz też pozostałych sekund
new Date(string)
z formatem innym niż ciąg formatu ISO-8601. Zobacz Dlaczego Date.parse daje nieprawidłowe wyniki? lub po prostu użyj liczb (np. new Date(2011, 9, 9, 12, 0, 0)
pamiętaj tylko, że miesiące są oparte na 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)
z formatem innym niż ciąg formatu ISO-8601. Zobacz Dlaczego Date.parse daje nieprawidłowe wyniki? lub po prostu użyj liczb (np. new Date(2011, 9, 9, 12, 0, 0)
pamiętaj tylko, że miesiące są oparte na 0).
Prosta funkcja do wykonania tego obliczenia:
function getMinutesBetweenDates(startDate, endDate) {
var diff = endDate.getTime() - startDate.getTime();
return (diff / 60000);
}
To powinno pokazać różnicę między dwiema datami w minutach. Wypróbuj w swojej przeglądarce:
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
Dla tych, którzy lubią pracować z małymi liczbami
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);
Ten problem można łatwo rozwiązać za pomocą pliku moment.js, na przykład:
var difference = mostDate.diff(minorDate, "minutes");
Drugi parametr można zmienić na inne parametry, patrz dokumentacja moment.js.
np. „dni”, „godziny”, „minuty” itp.
CDN for moment.js jest dostępny tutaj:
https://cdnjs.com/libraries/moment.js
Dzięki.
EDYTOWAĆ:
MostDate i minorDate powinny być typu momentu.
Oto trochę zabawy podczas rozwiązywania czegoś podobnego w węźle.
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
*/
Możesz zobaczyć to w akcji pod adresem https://repl.it/@GioCirque/TimeSpan-Formatting
Poniższy kod zadziałał dla mnie,
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);
}
Możesz wykonać następujące czynności:
difference of dates
(różnica będzie w milisekundach)milliseconds
na minutes
npms/1000/60
Kod:
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);