两个日期之间的差异与月份的变化

时间:2014-08-21 14:44:57

标签: javascript date difference

以下代码以获得天数差异:

var sDate = new Date('2014','08','30','0','0','0');
var eDate = new Date('2014','09','02','0','0','0');

var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));

结果是2.但如果我使用这些日期:

var sDate = new Date('2014','08','25','0','0','0');
var eDate = new Date('2014','08','29','0','0','0');

var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));

结果是3。

在两个日期它应该是3但每次切换月份时该函数忽略一个月的第一天。我用

测试了它
var sDate = new Date('2014','08','31','0','0','0');
var eDate = new Date('2014','09','01','0','0','0');

但结果是0.我在StackOverflow和Google网上搜索了很多但是找不到解决方案。任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

了解Date对象的时间。

来自MDN:

  

构造

     

new Date(year, month, day, hour, minute, second, millisecond);

     

     

表示月份的整数值,从1月的0开始到12月的11。

运行一个简单的测试,看看输出了什么:

console.log(new Date(2014,8,1,0,0,0));
console.log(new Date(2014,9,1,0,0,0));

那么现在你的情况会发生什么?

var sDate = new Date('2014','08','31','0','0','0');  

首先它们应该是整数而不是字符串

你说的是9月的第8个月,因为我们是零。由于9月份没有31天,浏览器不会抛出错误。它计算当天的情况。结果它将它改为10月1日。

答案 1 :(得分:0)

有一天有人认为这个月是零基础的,你认为你创造了8月30日和#34;事实上,你创造了9月30日"。在你的第二个例子中,你要求9月31日,这不存在,所以你得到了9月30日。

是的,这是非常迟钝的。