Javascript 随月份变化的两个日期之间的差异
以下代码以天为单位获取差异:Javascript 随月份变化的两个日期之间的差异,javascript,date,difference,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 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 Groups上搜索了很多,但找不到解决方案。任何帮助都会很好 了解日期对象的时间到了 来自MDN: 构造函数:
新日期(年、月、日、时、分、秒、毫秒)代码>
月
表示月份的整数值,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');
首先,它们应该是整数而不是字符串
你说的是第8个月,也就是9月,因为我们是零基的。由于9月份没有31天,浏览器不会抛出错误。它计算出一天会是什么样子。因此,它将其更改为10月1日。有一天,有人决定该月将以零为基准,你认为你创建了“8月30日”,而实际上你创建了“9月30日”。在第二个例子中,你要求的是9月31日,但这并不存在,所以你得到的是9月30日
是的,这相当迟钝。九月没有31天。但是八月有31天。天哪!jan=0…多么愚蠢…太棒了,谢谢!这真是令人困惑,我希望他们将来能改变这一点。