java – 考虑闰年,计算两个Date或Calendar对象之间的年数

所以在我正在研究的Java项目中,我们只需要使用Date和Calendar对象来表示日期.我正在编写的方法要求日期至少是过去的某些年数,因此我需要能够准确计算当前日期与给定日期或日历之间的年数.我已设法准确计算使用此实现之间的天数:

public static long daysSince(Date pastDate) {
    long millisecondsSince = new Date().getTime() - pastDate.getTime();
    return TimeUnit.DAYS.convert(millisecondsSince, TimeUnit.MILLISECONDS);
}

然而,我现在正在努力寻找一种方法来准确计算这些日期之间的年数,同时考虑闰年等.显然将上述方法的结果除以365或365.25并不是很有效.我知道joda time包和java.time但是我们明确需要使用Date和Calendar对象.任何人都知道如何做到这一点,最好尽可能快速和优雅?谢谢

编辑:似乎找到有效的解决方案,见下文

解决方法:

我终于能够使用以下代码实现所需的功能(使用来自Haseeb Anser链接的一些想法):

public static int yearsSince(Date pastDate) {
    Calendar present = Calendar.getInstance();
    Calendar past = Calendar.getInstance();
    past.setTime(pastDate);

    int years = 0;

    while (past.before(present)) {
        past.add(Calendar.YEAR, 1);
        if (past.before(present)) {
            years++;
        }
    } return years;
}

初步测试似乎得到了正确的输出,但我还没有进行更广泛的测试.

上一篇:LTE BW vs FS vs RB: LTE bandwidth vs sampling frequency vs resource block:带宽,采样频率,资源块


下一篇:rsync参数以及简介