package com.baeldung.java9.time; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; public class TimeApi { public static List getDatesBetweenUsingJava7(Date startDate, Date endDate) { List datesInRange = new ArrayList(); Calendar calendar = new GregorianCalendar(); calendar.setTime(startDate); Calendar endCalendar = new GregorianCalendar(); endCalendar.setTime(endDate); while (calendar.before(endCalendar)) { Date result = calendar.getTime(); datesInRange.add(result); calendar.add(Calendar.DATE, 1); } return datesInRange; } public static List getDatesBetweenUsingJava8(LocalDate startDate, LocalDate endDate) { long numOfDaysBetween = ChronoUnit.DAYS.between(startDate, endDate); return IntStream.iterate(0, i -> i + 1) .limit(numOfDaysBetween) .mapToObj(i -> startDate.plusDays(i)) .collect(Collectors.toList()); } public static List getDatesBetweenUsingJava9(LocalDate startDate, LocalDate endDate) { return startDate.datesUntil(endDate).collect(Collectors.toList()); } }