所以我正在玩JavaScript的Date对象,我碰到了一些我觉得有点奇怪的东西。
我试图找出两个给定日期之间的天数,为此我使用下面的公式:
var oneDay = 24*60*60*1000;
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
如果你选择2017-05-28& 2017-05-30它返回 2天 - 因为它应该
var oneDay = 24*60*60*1000;
var firstDate = new Date(2017, 05, 28);
var secondDate = new Date(2017, 05, 30);
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
如果你带上2017-05-30& 2017-06-01它返回 1天 - 应该是2天
var oneDay = 24*60*60*1000;
var firstDate = new Date(2017, 05, 28);
var secondDate = new Date(2017, 05, 30);
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
如果你带上2017-05-30& 2017-06-01它返回 3天 - 应该是2天
var oneDay = 24*60*60*1000;
var firstDate = new Date(2017, 11, 29);
var secondDate = new Date(2017, 12, 01);
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
答案 0 :(得分:1)
我曾经用了半个小时试图找出问题所在 - 并在发布后10秒我搞清楚了。
问题是,日期对象需要:
答案 1 :(得分:0)
请记住,Date构造函数还允许来自逻辑范围之外的值。
示例:new Date(2017, -2, 30)
来源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
其中Date被调用为具有多个参数的构造函数,if 值大于它们的逻辑范围(例如13提供为 月份值或分钟值为70),相邻值将为 调整。例如。新日期(2013,13,1)相当于新的 日期(2014,1,1),都创建了2014-02-01的日期(请注意 月是0基础)。与其他值类似:新日期(2013年,2,1,1, 70)相当于新的日期(2013年,2日,1日,1日,10日),它们都创造了一个 日期为2013-03-01T01:10:00。
答案 2 :(得分:-1)
您可以使用以下代码计算两个日期之间的差异(天数)。
var dateOne = new Date(firstDate);
var dateTwo = new Date(secondDate);
var dateDifference = Math.floor((dateTwo - dateOne) / 86400000);
console.log(dateDifference);