BAEL-924: How to get all LocalDates between two dates? (#2012)

This commit is contained in:
Syed Ali Raza
2017-06-08 10:47:10 +05:00
committed by Grzegorz Piwowarek
parent 4453358bfb
commit e59ecbc864
2 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
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.Stream;
public class TimeApi {
public static List<Date> getDatesBetweenUsingJava7(Date startDate, Date endDate) {
List<Date> datesInRange = new ArrayList<Date>();
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<LocalDate> getDatesBetweenUsingJava8(LocalDate startDate, LocalDate endDate) {
List<LocalDate> datesInRange = new ArrayList<LocalDate>();
long numOfDaysBetween = ChronoUnit.DAYS.between(startDate, endDate);
Stream.iterate(0, i -> i + 1).limit(numOfDaysBetween).forEach(i -> {
datesInRange.add(startDate.plusDays(i));
});
return datesInRange;
}
public static List<LocalDate> getDatesBetweenUsingJava9(LocalDate startDate, LocalDate endDate) {
return startDate.datesUntil(endDate).collect(Collectors.toList());
}
}