日期差异在JavaScript中无法正常工作

时间:2018-10-10 07:08:55

标签: javascript

日期差异无法正常工作。日期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

1 个答案:

答案 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单击链接指向答案