java如何遍历日期
遍历日期的几种方法
在Java中遍历日期可以通过多种方式实现,以下是几种常见的方法:

使用java.time.LocalDate(Java 8及以上版本)
LocalDate startDate = LocalDate.of(2023, 1, 1);
LocalDate endDate = LocalDate.of(2023, 1, 31);
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
System.out.println(date);
}
使用java.util.Calendar(旧版Java)
Calendar start = Calendar.getInstance();
start.set(2023, Calendar.JANUARY, 1);
Calendar end = Calendar.getInstance();
end.set(2023, Calendar.JANUARY, 31);
while (!start.after(end)) {
System.out.println(start.getTime());
start.add(Calendar.DATE, 1);
}
使用java.util.Date和循环
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = sdf.parse("2023-01-01");
Date endDate = sdf.parse("2023-01-31");
long dayInMillis = 24 * 60 * 60 * 1000;
for (long i = startDate.getTime(); i <= endDate.getTime(); i += dayInMillis) {
System.out.println(sdf.format(new Date(i)));
}
使用java.time.temporal.TemporalAdjusters(Java 8及以上版本)
LocalDate startDate = LocalDate.of(2023, 1, 1);
LocalDate endDate = LocalDate.of(2023, 1, 31);
Stream.iterate(startDate, date -> date.plusDays(1))
.limit(ChronoUnit.DAYS.between(startDate, endDate) + 1)
.forEach(System.out::println);
遍历月份中的每一天
YearMonth yearMonth = YearMonth.of(2023, 1);
LocalDate start = yearMonth.atDay(1);
LocalDate end = yearMonth.atEndOfMonth();
for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) {
System.out.println(date);
}
注意事项
- Java 8及以上版本推荐使用
java.time包中的类,如LocalDate,因为它们更简洁且线程安全。 - 旧版Java可以使用
Calendar或Date,但需要注意线程安全和API的复杂性。 - 遍历时需注意边界条件,确保包含开始和结束日期。
以上方法可以根据具体需求选择使用,java.time包提供了更现代的日期时间处理方式。






