推荐:取出天数间隔,直接判断 >=30天就是间隔1个月
/**
* 月份间隔
*
* @param date1
* @param date2
* @param isSimple 简单模式 默认一个月按30天计算
* @return
*/
public static long monthInterval(Date date1, Date date2,boolean isSimple) {
if(isSimple) {
//getTime 取到是ms /(1000变成秒 * 60分钟 * 60小时 * 24天)
//或者你自己取出间隔天数再判断 (date2.getTime() - date1.getTime()) /(1000L * 60 * 60 * 24)
return (date2.getTime() - date1.getTime()) /(1000L * 60 * 60 * 24 * 30) ;
}else {
boolean compare = (date2.getTime() - date1.getTime()) > 0;
Date dd1 = compare ? date1 : date2;
Date dd2 = compare ? date2 : date1;
Calendar c1 = Calendar.getInstance();
c1.setTime(dd1);
Calendar c2 = Calendar.getInstance();
c2.setTime(dd2);
//相差年份,比如2年就是24个月
int yearMonth = (c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR)) * 12;
//相差月份,这个是不准的,比如 6.30 7.1 直接月份相减是1,但其实只差一天,那判断是否超过一个月,肯定是不超过
int monthInterval = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
//天数相差
int dayInterval = c2.get(Calendar.DATE) - c1.get(Calendar.DATE);
int dayMoth = dayInterval >= 0 ? 0 : -1;
return yearMonth + monthInterval + dayMoth;
}
}