获取开始日期与结束日期之间每天的list
public Map<String, List<String>> fetchDayListBetweenStartAndEnd(String startTime, String endTime) {Map<String, List<String>> map = Maps.newHashMap(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");List<String> startTimeList = Lists.newArrayList();List<String> endTimeList = Lists.newArrayList(); Date startDate = null;Date checkDate = null;try {startDate = sdf.parse(startTime);Date endDate = sdf.parse(endTime);Calendar cal = Calendar.getInstance();cal.setTime(startDate);int year = cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH);while (startDate.before(endDate) && month <= 11) {final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);cal.set(Calendar.DAY_OF_MONTH, last);Date lastDayOfMonth = cal.getTime();if (lastDayOfMonth.after(endDate)) {checkDate = endDate;} else {checkDate = lastDayOfMonth;}cal.setTime(startDate);while (startDate.before(checkDate)) {startTimeList.add(sdf.format(startDate));endTimeList.add(sdf.format(startDate));cal.add(Calendar.DAY_OF_MONTH, 1);startDate = cal.getTime();}startTimeList.add(sdf.format(checkDate));endTimeList.add(sdf.format(checkDate));month = month + 1;if (month == 12) {year = year + 1;month = 0;}cal.set(year, month, 1);startDate = cal.getTime();startTime = sdf.format(startDate);}if (startTime.equals(sdf.format(endDate))) {startTimeList.add(startTime);endTimeList.add(sdf.format(endDate));}if (!startTimeList.isEmpty() && !endTimeList.isEmpty()) {map.put("dayTimeList", startTimeList);}} catch (Exception e) {e.printStackTrace();}return map;}
获取开始日期与结束日期之间每个月的开始日期和结束日期的list
public Map<String, List<String>> fetchMonthFirstLastList(String startTime, String endTime) {Map<String, List<String>> map = Maps.newHashMap(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");List<String> startTimeList = Lists.newArrayList();List<String> endTimeList = Lists.newArrayList(); Date startDate = null;try {startDate = sdf.parse(startTime);Date endDate = sdf.parse(endTime);Calendar cal = Calendar.getInstance();cal.setTime(startDate);int year = cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH);while (startDate.before(endDate) && month <= 11) {final int first = cal.getActualMinimum(Calendar.DAY_OF_MONTH);cal.set(Calendar.DAY_OF_MONTH, first);Date firstDayOfMonth = cal.getTime();if (firstDayOfMonth.before(startDate)) {startTimeList.add(sdf.format(startDate));} else {startTime = sdf.format(firstDayOfMonth);startTimeList.add(startTime);}final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);cal.set(Calendar.DAY_OF_MONTH, last);Date lastDayOfMonth = cal.getTime();if (lastDayOfMonth.after(endDate)) {endTimeList.add(sdf.format(endDate));} else {endTimeList.add(sdf.format(lastDayOfMonth));}month += 1;if (month == 12) {year = year + 1;month = 0;}cal.set(year, month, 1);startDate = cal.getTime();startTime = sdf.format(startDate);}if (startTime.equals(sdf.format(endDate))) {startTimeList.add(startTime);endTimeList.add(sdf.format(endDate));}if (!startTimeList.isEmpty() && !endTimeList.isEmpty()) {map.put("startTimeList", startTimeList);map.put("endTimeList", endTimeList);}} catch (Exception e) {e.printStackTrace();}return map;}