cómo obtener una lista de fechas entre dos fechas en java
Quiero una lista de fechas entre la fecha de inicio y la fecha de finalización.
El resultado debe ser una lista de todas las fechas, incluidas la fecha de inicio y finalización.
Aceptado
Paquete java.time
Si está utilizando Java 8 , existe un enfoque mucho más claro. El nuevo paquete java.time en Java 8 incorpora las características de la API Joda-Time .
Su requisito se puede resolver utilizando el siguiente código:
String s = "2014-05-01";
String e = "2014-05-10";
LocalDate start = LocalDate.parse(s);
LocalDate end = LocalDate.parse(e);
List<LocalDate> totalDates = new ArrayList<>();
while (!start.isAfter(end)) {
totalDates.add(start);
start = start.plusDays(1);
}
En 2010, sugerí usar Joda-Time para eso.
Tenga en cuenta que Joda-Time está ahora en modo de mantenimiento. Desde 1.8 (2014), deberías usar
java.time
.
Añade un día a la vez hasta llegar a la fecha de finalización:
int days = Days.daysBetween(startDate, endDate).getDays();
List<LocalDate> dates = new ArrayList<LocalDate>(days); // Set initial capacity to `days`.
for (int i=0; i < days; i++) {
LocalDate d = startDate.withFieldAdded(DurationFieldType.days(), i);
dates.add(d);
}
No sería demasiado difícil implementar su propio iterador para hacer esto también, sería aún mejor.