繁体   English   中英

当年两个日期之间的月数

[英]Number of months between two dates in current year

我需要在Java中计算两个Date对象之间的月数,但只计算给定年份中的月数。

例如:

01.04.2013-30.07.2013,year = 2013 =>结果= 4

01.10.2013-30.02.2014,year = 2013 => result = 3

对于第二个示例,结果为3,因为给定年份(2013年)中只有10月,11月和12月。其余月份是2014年。

01.10.2012-30.02.2014,year = 2013 =>结果= 12

我有此代码,但在以下情况下id无效:01.04.2013-30.07.2013,year = 2012 => result = 0

        Calendar startCalendar = new GregorianCalendar();
        startCalendar.setTime(c.getStartDate());
        Calendar endCalendar = new GregorianCalendar();
        endCalendar.setTime(c.getEndDate());


        Calendar calculatedStartDate = new GregorianCalendar();
        Calendar calculatedEndDate = new GregorianCalendar();

        if (startCalendar.get(Calendar.YEAR) < year) {
            calculatedStartDate.setTime(new GregorianCalendar(year, Calendar.JANUARY, 1).getTime());
        }
        else {
            calculatedStartDate.setTime(c.getStartDate());
        }

        if (endCalendar.get(Calendar.YEAR) > year) {
            calculatedEndDate.setTime(new GregorianCalendar(year, Calendar.DECEMBER, 31).getTime());
        }
        else {
            calculatedEndDate.setTime(c.getEndDate());
        }

        int diffMonth = calculatedEndDate.get(Calendar.MONTH) - calculatedStartDate.get(Calendar.MONTH);
        return diffMonth + 1;

检查第二个日期是否与第一年相同。 然后,如果此条件为假,则将第二个日期设置为“ 31/12 / year”,并计算月份数。

例如:

first date: 31/4/2014
second date: 28/7/2014
2014 > 2014: false, so
    7-4 = 3 + 1 = 4 months

first date: 31/4/2014
second date: 28/7/2015
2015 > 2014: true, so
    second date = 31/12/2014
    12-4 = 8 + 1 = 9 months

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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