/**
* 计算两个日期的月份相差数
*
* @param begin 开始日期
* @param end 结束日期
* @return 相差月数,精确到天
*/
public static int minusMonth(Date begin, Date end) {
Calendar calendarBegin = Calendar.getInstance();
calendarBegin.setTime(begin);
Calendar calendarEnd = Calendar.getInstance();
calendarEnd.setTime(end);
int yearBegin = calendarBegin.get(Calendar.YEAR);
int monthBegin = calendarBegin.get(Calendar.MONTH);
int dayOfMonthBegin = calendarBegin.get(Calendar.DAY_OF_MONTH);
int yearEnd = calendarEnd.get(Calendar.YEAR);
int monthEnd = calendarEnd.get(Calendar.MONTH);
int dayOfMonthEnd = calendarEnd.get(Calendar.DAY_OF_MONTH);
int years = yearEnd - yearBegin;
int months = monthEnd - monthBegin;
// 月数偏移量,日期比较,若大则正好,若小则月数-1
int monthOffset = dayOfMonthEnd >= dayOfMonthBegin ? 0 : -1;
return years * 12 + months + monthOffset;
}