Java 7获取两个日期之间的天数,并计算闰年的正确计算

时间:2016-05-13 07:45:00

标签: java date datetime java-7

我在Java 7上看到了很多关于如何计算2个日期之间的天数的例子,但我发现它们没有正确包含闰年。

我见过这个例子,但显然闰年不包括在内:

Calculating days between two dates with in java

所以我希望看到正确的Java代码如何在不使用Joda Time和Java 8的情况下获得天数?

1 个答案:

答案 0 :(得分:0)

这个算法怎么样?

package com.example;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DayDifference {

    public static void main(String[] args) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = sdf.parse("2016-02-28");
        Date d2 = sdf.parse("2016-03-01");

        long diff = (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24);

        System.out.println("diff: " + diff);
    }
}

这输出2,因此适用于闰年。

更新:根据Andreas的评论,您最好使用+ 12h黑客,因为它也可以处理夏令时:(d2.getTime() - d1.getTime() + 1000 * 60 * 60 * 12) / (1000 * 60 * 60 * 24)