我一直在寻找Javascript中的日期差异,但我得不到我需要的答案。
当我将2015/12/02与2015/11/30进行比较时,日期差异应为2。 但是用我的代码,我得到-28。我该如何解决这个问题 - 也在考虑中 几个月的日子各不相同。
var btdate = new Date('2015/11/30');
var etdate = new Date('2015/12/02');
var diff2 = etdate.getDate() - btdate.getDate();
console.log(diff2);
答案 0 :(得分:0)
这是因为getDate()
只给你一个天数,例如在你的情况30和2,所以你得到-28差异
如果您想获得两个日期之间的天数,请使用getTime()然后将差异转换为天数
var diff = etdate.getTime() - btdate.getTime();
var days = diff/1000/60/60/24; // 1000 for milli seconds, 60 for seconds, 60 for minutes, 24 for hours in a day.
答案 1 :(得分:0)
获取以毫秒为单位的差异并将其转换为日期
var btdte = new Date('2015/11/30');
var etdate = new Date('2015/12/02');
//Get time difference in milliseconds
var timeDiff = Math.abs(etdate.getTime() - btdte.getTime());
//Convert milliseconds to dates
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
console.log(diffDays);
答案 2 :(得分:0)
var date1 = new Date(2010, 6, 17);
var date2 = new Date(2013, 12, 18);
var diff = new Date(date2.getTime() - date1.getTime());
// diff is:Thu Jul 05 1973 04:00:00 GMT + 0300(EEST)
console.log(diff.getUTCDate() - 1); // Gives day count of difference
// 4
答案 3 :(得分:0)
这对你有用。
function days(begin, end){
var diff = new Date(end) - new Date(begin);
return diff / 1000 / 60 / 60 / 24
}
如果你想做更多日期操作Moment.js可能是一个很好的图书馆。
> days('2015/11/30','2015/12/2')
2
> days('2015/11/30','2015/12/3')
3
> days('2015/11/30','2016/12/3')
369
答案 4 :(得分:0)
您可以使用moment.js
在日期执行任何操作。
获取2天之间的天数:
var startDate = moment("12-25-2014", "MM-DD-YYYY");
var endDate = moment("10-18-2015", "MM-DD-YYYY");
var diffInDays = endDate.diff(startDate, 'days') // 297
答案 5 :(得分:0)
我注意到了这方面的简单解决方案,
var btdate = new Date('2015/11/30');
var etdate = new Date('2015/12/02');
var diff2 = etdate - btdate; //here diffrence in milliseconds
//lets convert milliseconds into days.
diff2 /= 1000; //to seconds
diff2 /= 60; //to minutes
diff2 /= 60; //to hours
diff2 /= 24; //to days
console.log(diff2);