[英]Java 7 get number of days between 2 dates with correct calculation for leap years
我在Java 7上看到了许多示例,该示例如何计算两个日期之间的天数,但是我发现它们没有正确包含leap年。
我已经看到了这个示例,但是显然不包括leap年:
所以我想看看正确的Java代码如何在不使用Joda Time和Java 8的情况下获得天数?
那算术呢?
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,因此在leap年时效果很好。
更新 :根据Andreas的评论,您最好使用+ 12h hack,因为它也可以处理夏时制: (d2.getTime() - d1.getTime() + 1000 * 60 * 60 * 12) / (1000 * 60 * 60 * 24)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.