代码之家  ›  专栏  ›  技术社区  ›  Sarath TS

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

  •  0
  • Sarath TS  · 技术社区  · 6 年前

    日期差异无法正常工作。日期的不同 2018/10/22 & 2018/10/28 6 这个结果是正确的。但是日期不同 2018/10/22 & 2018/10/29 这个结果是错误的。任何帮助都将不胜感激。

    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);

    1 回复  |  直到 6 年前
        1
  •  2
  •   dertoni    6 年前

    @ken-y-n是对的这是欧洲夏季时间的问题。

    2018年10月28日凌晨3:00,时间重置为凌晨2:00。因此,这一天更长(90000000毫秒而不是86400000毫秒)。这会导致

    timeDiff / (1000 * 3600 * 24) == 7.041666666666667
    

    要解决这个问题,你可以按照@t-j-crowder在评论中提到的答案中给出的建议( TimeDiff in Javascript)

    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链接至答案