เราสามารถโยกย้ายตรรกะไปยังวิธีการต่าง ๆ ศัตรูJava 7, Java 8 และ Java 9 :
public static List<Date> getDatesRangeJava7(Date startDate, Date endDate) {
List<Date> datesInRange = new ArrayList<>();
Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startDate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(endDate);
while (startCalendar.before(endCalendar)) {
Date result = startCalendar.getTime();
datesInRange.add(result);
startCalendar.add(Calendar.DATE, 1);
}
return datesInRange;
}
public static List<LocalDate> getDatesRangeJava8(LocalDate startDate, LocalDate endDate) {
int numOfDays = (int) ChronoUnit.DAYS.between(startDate, endDate);
return IntStream.range(0, numOfDays)
.mapToObj(startDate::plusDays)
.collect(Collectors.toList());
}
public static List<LocalDate> getDatesRangeJava9(LocalDate startDate, LocalDate endDate) {
return startDate.datesUntil(endDate).collect(Collectors.toList());
}
จากนั้นเราสามารถเรียกใช้วิธีการเหล่านี้เป็น:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = formatter.parse("2010-12-20");
Date endDate = formatter.parse("2010-12-26");
List<Date> dateRangeList = getDatesRangeJava7(startDate, endDate);
System.out.println(dateRangeList);
LocalDate startLocalDate = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate endLocalDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
List<LocalDate> dateRangeList8 = getDatesRangeJava8(startLocalDate, endLocalDate);
System.out.println(dateRangeList8);
List<LocalDate> dateRangeList9 = getDatesRangeJava8(startLocalDate, endLocalDate);
System.out.println(dateRangeList9);
ผลลัพธ์จะเป็น:
[จันทร์ 20 ธันวาคม 00:00:00 IST 2010, วันที่ 21 ธันวาคม 00:00:00 IST 2010, พุธ 22 ธันวาคม 00:00:00 IST 2010, พฤหัสบดี 23 ธันวาคม 00:00:00 IST 2010, ศุกร์ 24 ธันวาคม 00: 00:00 IST 2010, เสาร์ 25 ธันวาคม 00:00:00 IST 2010]
[2010-12-2010, 2010-12-21, 2010-12-22, 2010-12-23, 2010-12-24, 2010-12-25]
[2010-12-2010, 2010-12-21, 2010-12-22, 2010-12-23, 2010-12-24, 2010-12-25]