Wie kann ich mit JavaScript die Differenz zwischen den beiden Daten in Minuten ermitteln, wenn ich zwei Daten habe ?
Wie kann ich mit JavaScript die Differenz zwischen den beiden Daten in Minuten ermitteln, wenn ich zwei Daten habe ?
Antworten:
Sie können diesen Code auschecken:
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 =)");
oder var diffMins = Math.floor((...
um Sekunden zu verwerfen, wenn Sie keine Minuten runden möchten.
Math.round(((diffMs % 86400000) % 3600000) / 60000);
funktioniert nicht, wenn der Unterschied größer als 60 Minuten ist
Wenn Sie 2 Datumsobjekte subtrahieren, erhalten Sie den Unterschied in Millisekunden, z.
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.abs
wird verwendet, um die absolute Differenz verwenden zu können ( new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')
ergibt also das gleiche Ergebnis).
Wenn Sie das Ergebnis durch 1000 teilen, erhalten Sie die Anzahl der Sekunden. Wenn Sie dies durch 60 teilen, erhalten Sie die Anzahl der Minuten. Um auf ganze Minuten zu runden, verwenden Sie Math.floor
oder Math.ceil
:
var minutes = Math.floor((diff/1000)/60);
In diesem Beispiel ist das Ergebnis 720
(Math.floor(seconds/60))+':'+((seconds/60)%60)
wenn Sie auch die restlichen Sekunden brauchen
new Date(string)
mit einem anderen Format als einer ISO-8601-Formatzeichenfolge verwenden. Siehe Warum liefert Date.parse falsche Ergebnisse? oder verwenden Sie einfach Zahlen (z. B. new Date(2011, 9, 9, 12, 0, 0)
denken Sie daran, dass Monate auf 0 basieren).
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)
mit einem anderen Format als einer ISO-8601-Formatzeichenfolge verwenden. Siehe Warum liefert Date.parse falsche Ergebnisse? oder verwenden Sie einfach Zahlen (z. B. new Date(2011, 9, 9, 12, 0, 0)
denken Sie daran, dass Monate auf 0 basieren).
Eine einfache Funktion, um diese Berechnung durchzuführen:
function getMinutesBetweenDates(startDate, endDate) {
var diff = endDate.getTime() - startDate.getTime();
return (diff / 60000);
}
Das sollte den Unterschied zwischen den beiden Daten in Minuten zeigen. Probieren Sie es in Ihrem Browser aus:
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
Für diejenigen, die gerne mit kleinen Zahlen arbeiten
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);
Dieses Problem lässt sich mit moment.js wie in diesem Beispiel leicht lösen:
var difference = mostDate.diff(minorDate, "minutes");
Der zweite Parameter kann für andere Parameter geändert werden (siehe Dokumentation zu moment.js).
zB: "Tage", "Stunden", "Minuten" usw.
Das CDN für moment.js finden Sie hier:
https://cdnjs.com/libraries/moment.js
Vielen Dank.
BEARBEITEN:
mostDate und minorDate sollten ein Momenttyp sein.
Hier ist ein bisschen Spaß, den ich hatte, um etwas Ähnliches in Node zu lösen.
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
*/
Sie können es in Aktion unter https://repl.it/@GioCirque/TimeSpan-Formatting sehen
Der folgende Code hat bei mir funktioniert:
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);
}
Sie können wie folgt vorgehen:
difference of dates
(Differenz wird in Millisekunden angegeben)milliseconds
in minutes
dhms/1000/60
Der 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);