注:该方法的计算不考虑日对月数的影响,比如2020-06-30与2020-07-01计算的结果依然是相差1个月。
1.核心代码
public statis int getMonthDiff(Date largeDate, Date smallDate) {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(largeDate);
c2.setTime(smallDate);
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int month2 = c2.get(Calendar.MONTH);
// 获取年的差值
int yearInterval = year1 - year2;
// 获取月数差值
int monthInterval = month1 - month2;
int monthsDiff = yearInterval * 12 + monthInterval;
return monthsDiff;
}
2.测试代码
public static void main(String[] args) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2020-07-01");
Date date2 = formatter.parse("2020-06-30");
Date date3 = formatter.parse("2021-07-01");
int a = getMonthDiff(date1,date2);
int b = getMonthDiff(date2,date1);
int c = getMonthDiff(date3,date1);
int d = getMonthDiff(date1,date3);
System.out.println("相差月份:"+a);
System.out.println("相差月份:"+b);
System.out.println("相差月份:"+c);
System.out.println("相差月份:"+d);
}
3.结果
结语:如果只想获取相差月份的正值,可以在返回结果是加一个取绝对值函数Math.abs()。