日期差异无法正常工作。日期2018/10/22 & 2018/10/28
之差为6
,此结果是正确的。但是日期2018/10/22 & 2018/10/29
的差值为8,则此结果是错误的。任何帮助将不胜感激。
var date1 = new Date("2018/10/22");
var date2 = new Date("2018/10/28");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
console.log(diffDays);
结果是6
var date1 = new Date("2018/10/22");
var date2 = new Date("2018/10/29");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
console.log(diffDays);
结果是8
答案 0 :(得分:2)
@ ken-y-n是正确的,这是欧洲夏季时间的问题。
2018年10月28日上午3:00,时间重置为2:00 am。因此该天更长(从90000000毫秒变为86400000)。导致
timeDiff / (1000 * 3600 * 24) == 7.041666666666667
而不是7。哪个Math.ceil最多可以带来8 ...
要解决此问题,您可以按照@ t-j-crowder在评论中所提及的答案中给出的建议...(TimeDiff in Javascript))。
简而言之:将timediff舍入到最接近的整数以调整夏令时:
var date1 = new Date("2018/10/22");
var date2 = new Date("2018/10/29");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(Math.round(timeDiff / (1000 * 3600 * 24)));
console.log(diffDays);
有关更多详细信息,您可以通过@miles单击链接指向答案