Der einfachste Weg, um den Unterschied zwischen zwei Daten zu ermitteln:
var diff = Math.floor(( Date.parse(str2) - Date.parse(str1) ) / 86400000);
Sie erhalten die Differenztage (oder NaN, wenn einer oder beide nicht analysiert werden konnten). Das Analysedatum gab das Ergebnis in Millisekunden an. Um es nach Tag zu erhalten, müssen Sie es durch 24 * 60 * 60 * 1000 teilen
Wenn Sie möchten, dass es durch Tage, Stunden, Minuten, Sekunden und Millisekunden geteilt wird:
function dateDiff( str1, str2 ) {
var diff = Date.parse( str2 ) - Date.parse( str1 );
return isNaN( diff ) ? NaN : {
diff : diff,
ms : Math.floor( diff % 1000 ),
s : Math.floor( diff / 1000 % 60 ),
m : Math.floor( diff / 60000 % 60 ),
h : Math.floor( diff / 3600000 % 24 ),
d : Math.floor( diff / 86400000 )
};
}
Hier ist meine überarbeitete Version der James-Version:
function mydiff(date1,date2,interval) {
var second=1000, minute=second*60, hour=minute*60, day=hour*24, week=day*7;
date1 = new Date(date1);
date2 = new Date(date2);
var timediff = date2 - date1;
if (isNaN(timediff)) return NaN;
switch (interval) {
case "years": return date2.getFullYear() - date1.getFullYear();
case "months": return (
( date2.getFullYear() * 12 + date2.getMonth() )
-
( date1.getFullYear() * 12 + date1.getMonth() )
);
case "weeks" : return Math.floor(timediff / week);
case "days" : return Math.floor(timediff / day);
case "hours" : return Math.floor(timediff / hour);
case "minutes": return Math.floor(timediff / minute);
case "seconds": return Math.floor(timediff / second);
default: return undefined;
}
}