在Javascript中获取日期差异

时间:2015-12-02 05:41:50

标签: javascript date

我一直在寻找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);

6 个答案:

答案 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);