JodaTime ist nett, aber der Vollständigkeit halber und/oder wenn Sie API-Einrichtungen bevorzugen, hier sind die Standard-API-Ansätze.
Wenn mit java.util.Date
Instanzen Anfahren wie unten:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = formatter.parse("2010-12-20");
Date endDate = formatter.parse("2010-12-26");
Hier ist das Vermächtnis java.util.Calendar
Ansatz, falls Sie nicht auf Java8 noch:
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);
}
Und hier ist java.time.LocalDate
Ansatz der Java8, im Grunde genau der JodaTime-Ansatz:
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);
}
Wenn Sie das Enddatum einschließlich iterieren möchten, verwenden Sie !start.after(end)
bzw. !date.isAfter(end)
. anstelle eines
Dank Mann, ich schulde Ihnen ein –
Um auf den Punkt zu Joda Zeit zu erweitern: Der Versuch, dies richtig zu implementieren selbst ist härter als man wegen der Ecke denken könnte Fälle um Änderungen in und von Sommerzeit. – Raedwald
+1 für Joda Zeit! – PaulP1975