我在Java 7上看到了很多关于如何计算2个日期之间的天数的例子,但我发现它们没有正确包含闰年。
我见过这个例子,但显然闰年不包括在内:
Calculating days between two dates with in java
所以我希望看到正确的Java代码如何在不使用Joda Time和Java 8的情况下获得天数?
答案 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)