[英]Calculate months between two dates keeping year in mind using JodaTime
[英]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.