/**
* 获取当日期前/后某个月的所有日期 0表示当前月 负数表示前多少月 正数表示后多少月
* @param month
* @return
*/
public static List<Date> getDayListOfMonth(Integer months){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
List<Date> list = new ArrayList<>();
Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
aCalendar.set(aCalendar.MONTH, months+1);
int year = aCalendar.get(Calendar.YEAR);//年份
int month = aCalendar.get(Calendar.MONTH)+1;//月份
int day = aCalendar.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= day; i++) {
String aDate = String.valueOf(year)+"-"+month+"-"+i;
Date parse = null;
try {
parse = simpleDateFormat.parse(aDate);
} catch (ParseException e) {
e.printStackTrace();
}
list.add(parse);
}
return list;
}
获取两个日期间相差的天数
/**
* java获取两个日期之间相差的天数
* @param date1
* @param date2
* @return
*/
public static Integer getMonth(Date date1, Date date2){
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(date1);
c2.setTime(date2);
if(c1.getTimeInMillis() < c2.getTimeInMillis()) return 0;
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 day1 = c1.get(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_OF_MONTH);
// 获取年的差值 假设 date1 = 2015-8-16 date2 = 2011-9-30
int yearInterval = year1 - year2;
// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
if(month1 < month2 || month1 == month2 && day1 < day2) yearInterval --;
// 获取月数差值
int monthInterval = (month1 + 12) - month2 ;
if(day1 < day2) monthInterval --;
monthInterval %= 12;
return yearInterval * 12 + monthInterval;
}