1.获取两个字符串日期之间的所有月份(pattern 可以和beginTime和endTime格式一样,如"yyyy-MM-dd","yyyy-MM")
public static List<String> getMonths(String beginTime, String endTime,String pattern){
List<String> months = new ArrayList<String>();Calendar begin = Calendar.getInstance();Calendar end = Calendar.getInstance();SimpleDateFormat format = new SimpleDateFormat(pattern);try {begin.setTime(format.parse(beginTime));begin.set(begin.get(Calendar.YEAR), begin.get(Calendar.MONTH),1);end.setTime(format.parse(endTime));end.set(end.get(Calendar.YEAR), end.get(Calendar.MONTH), 2);Calendar current = begin;while(current.before(end)){months.add(format.format(current.getTime()));current.add(Calendar.MONTH, 1);}} catch (ParseException e) {e.printStackTrace();}return months;
}2.获取某个月的每一天 datePattern 可以为 "-" 或者"/" 或者 ""
public static List<String> getMonthEveryDay(String time,String pattern,String datePattern){
List<String> dayList = new ArrayList<String>();SimpleDateFormat format = new SimpleDateFormat(pattern);try {Date date = format.parse(time);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH)+1;int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);for (int i = 1; i < days+1; i++) {if(month < 10 && i < 10){String formatDay = year+datePattern+"0"+month+datePattern+"0"+i;dayList.add(formatDay);}else if(month < 10 && i >= 10){String formatDay = year+datePattern+"0"+month+datePattern+i;dayList.add(formatDay);}else if(month > 10 && i < 10 ){String formatDay = year+datePattern+month+datePattern+"0"+i;dayList.add(formatDay);}else{String formatDay = year+datePattern+month+datePattern+i;dayList.add(formatDay);}}} catch (ParseException e) {e.printStackTrace();}return dayList;
}