JodaTime est très bien, cependant, par souci d'exhaustivité et/ou si vous préférez les facilités fournies par l'API, voici les approches standard de l'API.
En commençant par java.util.Date
comme ci-dessous :
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = formatter.parse("2010-12-20");
Date endDate = formatter.parse("2010-12-26");
Voici l'héritage java.util.Calendar
au cas où vous ne seriez pas encore sous Java8 :
Calendar start = Calendar.getInstance();
start.setTime(startDate);
Calendar end = Calendar.getInstance();
end.setTime(endDate);
for (Date date = start.getTime(); start.before(end); start.add(Calendar.DATE, 1), date = start.getTime()) {
// Do your job here with `date`.
System.out.println(date);
}
Et voici celui de Java8 java.time.LocalDate
qui est en fait exactement la même que celle de JodaTime :
LocalDate start = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate end = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
for (LocalDate date = start; date.isBefore(end); date = date.plusDays(1)) {
// Do your job here with `date`.
System.out.println(date);
}
Si vous voulez itérer inclusivement la date de fin, puis utilisez !start.after(end)
y !date.isAfter(end)
respectivement.