JodaTime es agradable, sin embargo, para completar y/o si prefiere instalaciones provistas por API, estos son los enfoques API estándar.
Cuando comenzando con java.util.Date
casos como a continuación:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = formatter.parse("2010-12-20");
Date endDate = formatter.parse("2010-12-26");
Aquí está el legado java.util.Calendar
enfoque en caso de que no se encuentra en Java8 aún:
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);
}
Y aquí está el enfoque de Java8 java.time.LocalDate
, básicamente exactamente el enfoque 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 desea iterar inclusive la fecha de finalización, luego use !start.after(end)
y !date.isAfter(end)
respectivamente.
Gracias hombre, Te debo una –
Para ampliar el punto sobre Joda Time: tratar de implementar correctamente este sí mismo es más difícil de lo que parece, debido a la esquina casos alrededor de cambios hacia y desde el horario de verano. – Raedwald
+1 para Joda Time! – PaulP1975