Cách dễ nhất để có được sự khác biệt giữa hai ngày:
var diff = Math.floor(( Date.parse(str2) - Date.parse(str1) ) / 86400000);
Bạn nhận được các ngày khác nhau (hoặc NaN nếu không thể phân tích cú pháp một hoặc cả hai). Ngày phân tích đã cho kết quả tính bằng mili giây và để có được kết quả theo ngày, bạn phải chia nó cho 24 * 60 * 60 * 1000
Nếu bạn muốn nó chia cho ngày, giờ, phút, giây và mili giây:
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 )
};
}
Đây là phiên bản James được tái cấu trúc của tôi:
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;
}
}