JodaTime хорош, однако, для полноты и / или если вы предпочитаете средства, предоставляемые API, вот стандартные подходы API.
При запуске с java.util.Date
экземплярами, как показано ниже:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = formatter.parse("2010-12-20");
Date endDate = formatter.parse("2010-12-26");
Вот унаследованный java.util.Calendar
подход, если вы еще не работали на 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);
}
А вот подход Java8 java.time.LocalDate
, в основном именно подход 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);
}
Если вы хотите повторить включительно дату окончания, используйте !start.after(end)
и !date.isAfter(end)
соответственно.