以下代码以获得天数差异:
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网上搜索了很多但是找不到解决方案。任何帮助都会很棒!
答案 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日。
是的,这是非常迟钝的。