基于Java8做的时间拆分成集合的方法
- 以下方法是将时间按照天数拆分成集合,
public static final String DATE_PATTERN = "yyyy-MM-dd";
/**
* 将给定的时间段拆分成列表,列表中的每个元素表示一天。
*
* @param startTime 开始时间
* @param endTime 结束时间
* @return 拆分后的日期列表
*/
public static List<String> splitDate(LocalDateTime startTime, LocalDateTime endTime) {
return splitDate(startTime.toLocalDate(), endTime.toLocalDate());
}
/**
* 将给定的起始时间和结束时间之间的日期逐日拆分并返回一个字符串列表
* @param startTime 起始时间(包含)
* @param endTime 结束时间(包含)
* @return 日期字符串列表
*/
public static List<String> splitDate(LocalDate startTime, LocalDate endTime) {
ArrayList<String> list = new ArrayList<>();
LocalDate tempTime;
do {
list.add(localDateToString(startTime, DATE_PATTERN));
tempTime = startTime.plusDays(1);
startTime = tempTime;
} while (ChronoUnit.DAYS.between(endTime, tempTime) <= 0);
list.sort(Comparator.naturalOrder());
return list;
}
- 根据Xxx实体对象的开始时间和结束时间进行切割
/** * 根据开始时间和结束时间拆分时间段并返回拆分后的对象列表 * * @param x 必须包含开始时间(LocalDateTime类型)和 结束时间(LocalDateTime类型) * @return 拆分后的Xxx列表(List<Xxx>类型) */ public List<Xxx> splitTime(Xxx x) { if (Objects.isNull(x)) return Collections.emptyList(); LocalDateTime tempTime; LocalDateTime startTime = x.getStartTime(); LocalDateTime endTime = x.getEndTime(); List<Xxx> list = new ArrayList<>(); do { Xxx xx = new Xxx(); xx.setStartTime(startTime); tempTime = startTime.plusHours(24); startTime = tempTime; orderSyncDTO.setEndTime(tempTime); list.add(xx); } while (ChronoUnit.HOURS.between(tempTime, endTime) >= 24); return list; }