我想找到两个日期之间的差异,包括在内。例如,
11/1/2014 (Nov 1) - 10/1/2014 (Oct 1) == 32 days
我使用以下page
检查我的搜索结果var date1 = new Date(2013, 10, 01);
var date2 = new Date(2015, 10, 15);
var diff = new Date(date2.getTime() - date1.getTime());
console.log("diff.getUTCDate: " + diff.getUTCDate() );
// diff is: Thu Jul 05 1973 04:00:00 GMT+0300 (EEST)
if(diff.getUTCDate() == 1){
console.log(diff.getUTCDate() ); // Gives day count of difference
}else{
console.log( diff.getUTCDate() + 1 );
}
答案 0 :(得分:0)
所以我假设你想要计算两个日期之间的天数(包括结束日期)。你错误地输入了你的例子:2014年1月10日到2014年1月11日之间 - 应该返回32天
如果是这种情况,请删除日期的时间部分,然后进行日期减法:
var d1 = new Date('October 01 2014'.replace('th',''));
var d2 = new Date('November 01 2014'.replace('th',''));
// remove the time portion, set the dates to midnight
d1.setHours(0,0,0,0);
d2.setHours(0,0,0,0);
var diff = Math.ceil((d2 - d1) / 86400000) + 1;
console.log(diff); //returns 32
答案 1 :(得分:0)
如果您不想对可能较大的数字进行除法,可以通过 Date 为您完成某些工作来减少问题
function isLeapYear(year) {
if (year % 4) return false;
if (year % 100) return true;
if (year % 400) return false;
return true;
}
function dayOfYear(date) {
var d1 = Date.UTC(date.getUTCFullYear(), 0, 0),
d2 = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());
return (d2 - d1) / 864e5;
}
function daysBetween(start, end) {
var days = dayOfYear(end) - dayOfYear(start);
start = start.getUTCFullYear();
end = end.getUTCFullYear();
for (; start < end; ++start)
days += isLeapYear(start) ? 366 : 365;
return days;
}
现在只是
的情况daysBetween(new Date(2014, 10-1, 1), new Date(2014, 11-1, 1)); // 32
如果您的时间范围将跨越数十年或数百年,这是有益的
否则只需快速修改dayOfYear
即可
function countDays(start, end) {
var d1 = Date.UTC(start.getUTCFullYear(), start.getUTCMonth(), start.getUTCDate()),
d2 = Date.UTC(end.getUTCFullYear(), end.getUTCMonth(), end.getUTCDate());
return (d2 - d1) / 864e5;
}
然后
countDays(new Date(2014, 10-1, 1), new Date(2014, 11-1, 1)); // 32
请注意我使用 UTC 进行这些计算,这只是为了避免任何夏令时或其他时区更改
答案 2 :(得分:0)
包括Moment.js以便进行合理的日期处理。然后它就像
一样简单var a = moment([2014,12,9])
var b = moment([2014,11,3])
a.diff(b, 'days') //37