import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import com.bytter.core.utils.DateUtils;
public class test {
public static void main(String[] args) {
int month = 0;
Date date1;
Date date2;
try {
date1 = new SimpleDateFormat("yyyy-MM-dd").parse("2018-11-1");
date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2018-11-1");
month = monthDiffs(date1,date2);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(month);
}
public static int monthDiffs(Date endDate,Date startDate ){
Calendar end = Calendar.getInstance();
Calendar start = Calendar.getInstance();
end.setTime(endDate);
start.setTime(startDate);
//相差的月数
int month = (end.get(Calendar.MONTH) + ( (end.get(Calendar.YEAR) - start.get(Calendar.YEAR))*12 ) - start.get(Calendar.MONTH));
//int month = DateUtils.dateDiff('M', end, start);//相差的月数
int startDays = DateUtils.getDayOfMonth(startDate);//项目开始日期的相应月份共有多少天
int endDays = DateUtils.getDayOfMonth(endDate);//项目结束日期的相应月份共有多少天
if(startDays== start.get(Calendar.DAY_OF_MONTH)){//开始日期是否是月末的最后一天
if(endDays == end.get(Calendar.DAY_OF_MONTH)){//结束日期月末最后一天
month++;
}else{
if(end.get(Calendar.DAY_OF_MONTH)>start.get(Calendar.DAY_OF_MONTH)){//结束日期当月天数 > 开始日期单月天数
month++;
}
}
}else{
if(endDays==end.get(Calendar.DAY_OF_MONTH)){//结束日期月末最后一天
month++;
}else{
if(end.get(Calendar.DAY_OF_MONTH)>start.get(Calendar.DAY_OF_MONTH)){
month++;
}
}
}
return month;
}
}