/** * @methodName getMonthDate * @description TODO 根据时间段按月分组 * @param beginDate, endDate * @return java.util.List<java.util.Map> * @author * @date */
public static List<Map> getMonthDate(Date beginDate, Date endDate) { List<Map> list = new ArrayList<>(); Calendar dd = Calendar.getInstance(); dd.setTime(beginDate); Calendar cale = Calendar.getInstance(); Calendar cc = Calendar.getInstance(); cc.setTime(endDate); Map map = null; if (endDate.equals(beginDate)) { map = new HashMap(); map.put("beginTime", beginDate); map.put("endTime", endDate); list.add(map); return list; } //开始时间在结束时间之后 while (dd.getTime().before(cc.getTime())) { map = new HashMap(); if (dd.get(Calendar.MONTH) == cc.get(Calendar.MONTH) && dd.get(Calendar.YEAR) == cc.get(Calendar.YEAR)) { map.put("beginTime", dd.getTime()); map.put("endTime", endDate); list.add(map); } else { cale.setTime(dd.getTime()); map.put("beginTime", cale.getTime()); cale.set(Calendar.DAY_OF_MONTH, dd.getActualMaximum(Calendar.DAY_OF_MONTH)); map.put("endTime", cale.getTime()); list.add(map); } dd.add(Calendar.MONTH, 1); dd.set(Calendar.DAY_OF_MONTH, 1); } return list.stream().distinct().collect(Collectors.toList()); }