1、获取两个日期之间的所有日期,包括起始日期和结束日期 (java7)
public static List<String> getDatesBetweenUsingJava7(Date startDate, Date endDate) {
List<String> datesInRange = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = new GregorianCalendar();
calendar.setTime(startDate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(endDate);
while (calendar.before(endCalendar)) {
Date result = calendar.getTime();
datesInRange.add(sdf.format(result));
calendar.add(Calendar.DATE, 1);
}
return datesInRange;
}
2、获取两个日期之间的所有日期,包括起始日期和结束日期 (java8)
public static List<LocalDate> getDatesBetweenUsingJava8(LocalDate startDate, LocalDate endDate) {
long numOfDaysBetween = ChronoUnit.DAYS.between(startDate, endDate);
return IntStream.iterate(0, i -> i + 1).limit(numOfDaysBetween+1).mapToObj(i -> startDate.plusDays(i)).collect(Collectors.toList());
}
附:Date 转 LocalDate 方法
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();