随月份变化的两个日期之间的差
Difference between two dates with changing month
获取天数差异的代码:
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上搜索了很多,但没有找到解决方案。任何帮助都太好了!
是时候了解一下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');
首先它们应该是整数而不是字符串
你说的是第8个月,也就是9月,因为我们是从0开始的。由于9月没有31天,浏览器不会抛出错误。它可以计算出当天是什么日子。结果它将日期改为10月1日。
某天某人决定这个月将以零为基础,你认为你创建了一个"30 of August",而实际上你创建了一个"30 of September"。在第二个例子中,你问的是9月31日,而9月31日并不存在,所以你得到的是9月30日。
相关文章:
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何用moment.js列出两个日期之间的所有月份
- 两个日期时间选择器
- 如何在JavaScript中比较两个日期
- Javascript两个日期选择器冲突
- 如何从日期范围选择器中获取两个日期
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 再次使用JavaScript计算两个日期之间的天数
- Mongoose查询在两个日期时间之间提取数据
- 在Javascript中计算两个日期之间的工作日,节假日除外
- 两个日期之间的差异
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 如何比较 JavaScript 格式为 2011-jan-21 的两个日期
- 如何在javascript中计算两个日期时间之间的差异
- (Angular+Bootstrap)如何阻止两个日期选择器被同一按钮打开
- 两个日期之间的月份差异,计算月份的最后日期
- 如何在JavaScript中返回两个日期(当前日期和输入日期)之间的字符串差异
- Moment.js-两个日期的天数不同
- 如何在javascript中比较两个日期时间