Javascript日期月份持续时间计算1/1到31/1返回0

时间:2015-11-19 14:35:25

标签: javascript date

我搜索了一下,但找不到任何类似的帖子。也许我不知道如何搜索它。  我试图计算几个月,但是当日期是从1/1到31/1时,它返回0.我想到了一个解决方案,但还有其他方法吗?

有问题的代码。

    function monthDiff(d1, d2) {
    var months;
    months = (d2.getFullYear() - d1.getFullYear()) * 12;
    months -= d1.getMonth();
    months += d2.getMonth();
    return months <= 0 ? 0 : months;
}

2 个答案:

答案 0 :(得分:1)

解决方案是将日期添加到日期2,以便进入下个月。

function monthDiff(d1, d2) {
    var months;
    months = (d2.getFullYear() - d1.getFullYear()) * 12;
    d2.setDate(d2.getDate()+1);
    months -= d1.getMonth();
    months += d2.getMonth();
    return months <= 0 ? 0 : months;
}

答案 1 :(得分:1)

它将返回0,因为它是同一个月。除非存在月份差异,否则不会返回1.

1月1日是1月30日的同一个月。