繁体   English   中英

Java 7获得2个日期之间的天数,并正确计算leap年

[英]Java 7 get number of days between 2 dates with correct calculation for leap years

我在Java 7上看到了许多示例,该示例如何计算两个日期之间的天数,但是我发现它们没有正确包含leap年。

我已经看到了这个示例,但是显然不包括leap年:

用java计算两个日期之间的天数

所以我想看看正确的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM