ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-08-29 08:01:27  阅读:267  来源: 互联网

标签:difference java date time 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;
}

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

标签:difference,java,date,time,calendar
来源: https://codeday.me/bug/20190829/1758716.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有