/** * 获取规则包含的日历集合 * @return */ public List<String> getIncludeDateList() { List<String> resultList = null; if (StringUtils.isNotBlank(includeDates)) { resultList = Arrays.asList(includeDates.split(",")); } return resultList; } /** * 获取逢周几(可售不可售)集合 * @return */ public List<String> getWeekList() { List<String> resultList = new ArrayList<String>(); if (StringUtils.isBlank(this.weekDays)) { return resultList; } for (int i = 0; i < weekDays.length(); i++) { resultList.add(String.valueOf(weekDays.charAt(i))); } return resultList; } public List<String> getEffectDateList()throws Exception{ if(TourPackageCalendarUtil.Type.DAYS.name().equals(type)){ List<String> includeDateList = this.getIncludeDateList(); List<String> finalList = new ArrayList<>(); // 清理时间小于当前时间的日期 for(String includeDateStr : includeDateList){ if (DateUtil.compareDateStr(includeDateStr, DateUtil.getCurrentDateStr("yyyy-MM-dd"), "yyyy-MM-dd") > 0) { continue; } finalList.add(includeDateStr); } return finalList; }else if(TourPackageCalendarUtil.Type.DATE_RANGE.name().equals(type)){ if (StringUtils.isBlank(this.startDate) || StringUtils.isBlank(this.endDate)) { return null; } // 若endDate在今天之后,则返回空 if (DateUtil.compareDateStr(this.endDate, DateUtil.getCurrentDateStr("yyyy-MM-dd"), "yyyy-MM-dd") > 0) { return null; } if (DateUtil.compareDateStr(this.startDate, DateUtil.getCurrentDateStr("yyyy-MM-dd"), "yyyy-MM-dd") > 0) { return getEffectDateList(DateUtil.getCurrentDateStr("yyyy-MM-dd"), this.endDate); } } return null; } /** * 查询符合出行时间的所有可售日期 * @param tripDateStr * @return * @throws Exception */ public List<String> getEffectDateList(String tripDateStr)throws Exception{ if(TourPackageCalendarUtil.Type.DAYS.name().equals(type)){ List<String> includeDateList = this.getIncludeDateList(); List<String> finalList = new ArrayList<>(); // 清理时间小于出行时间的日期 for(String includeDateStr : includeDateList){ if (DateUtil.compareDateStr(includeDateStr, tripDateStr, "yyyy-MM-dd") > 0) { continue; } finalList.add(includeDateStr); } return finalList; }else if(TourPackageCalendarUtil.Type.DATE_RANGE.name().equals(type)){ if (StringUtils.isBlank(this.startDate) || StringUtils.isBlank(this.endDate)) { return null; } // 若endDate在今天之后,则返回空 if (DateUtil.compareDateStr(this.endDate, tripDateStr, "yyyy-MM-dd") > 0) { return null; } if (DateUtil.compareDateStr(this.startDate, tripDateStr, "yyyy-MM-dd") > 0) { return getEffectDateList(DateUtil.getCurrentDateStr("yyyy-MM-dd"), this.endDate); } } return null; } /** * 获取一段时间内当前日历规则的所包含的日期 * @param startDateStr endDateStr在日期范围内查找,如果为空,则返回emptyList * @return */ public List<String> getEffectDateList(String startDateStr, String endDateStr)throws Exception{ List<String> resultList = new ArrayList<String>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (TourPackageCalendarUtil.Type.DATE_RANGE.name().equals(this.type)) { if(DateUtil.compareDateStr(startDateStr, this.startDate, "yyyy-MM-dd") > 0){ startDateStr = this.startDate; } if(DateUtil.compareDateStr(endDateStr, this.endDate, "yyyy-MM-dd") < 0){ endDateStr = this.endDate; } Date startDate = sdf.parse(startDateStr); Date endDate = sdf.parse(endDateStr); // 日期范围型 判断包含日期 // 查询限定的周几 List<String> weekList = getWeekList(); Calendar calendar = Calendar.getInstance(); calendar.setTime(startDate); while(calendar.getTime().getTime() <= endDate.getTime()){ // 一天一天增加 日期满足逢周就是包含日期 int calendarWeek = calendar.get(Calendar.DAY_OF_WEEK); calendarWeek = (calendarWeek-1)==0 ? 7 : (calendarWeek-1); if(weekList.contains(calendarWeek+"")){ resultList.add(sdf.format(calendar.getTime())); } calendar.add(Calendar.DAY_OF_MONTH, 1); } } else if (TourPackageCalendarUtil.Type.DAYS.name().equals(this.type)) { Date startDate = sdf.parse(startDateStr); Date endDate = sdf.parse(endDateStr); // 日历型 判断日期是否在此范围内 List<String> includeDateStrList = getIncludeDateList(); for(String includeDateStr : includeDateStrList){ Date includeDate = sdf.parse(includeDateStr); if(startDate.getTime() <= includeDate.getTime() && includeDate.getTime() <= endDate.getTime()){ resultList.add(includeDateStr); } } } return resultList; } }
获取日期范围内有效排期
最新推荐文章于 2022-03-15 15:57:55 发布