// 获取当前月份的第一天
LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth());
// 获取当前月份的最后一天
LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
// 获取当前月份的第一周的开始时间和结束时间
LocalDate firstWeekStart = firstDayOfMonth.with(TemporalAdjusters.previousOrSame(LocalDate.MONDAY));
LocalDate firstWeekEnd = firstDayOfMonth.with(TemporalAdjusters.nextOrSame(LocalDate.SUNDAY));
// 输出第一周的开始时间和结束时间
System.out.println("First week start: " + firstWeekStart);
System.out.println("First week end: " + firstWeekEnd);
// 循环获取每周的开始时间和结束时间
LocalDate weekStart = firstWeekEnd.plusDays(1); // 下一周的开始时间
LocalDate weekEnd = weekStart.with(TemporalAdjusters.nextOrSame(LocalDate.SUNDAY)); // 下一周的结束时间
while (weekEnd.isBefore(lastDayOfMonth) || weekEnd.isEqual(lastDayOfMonth)) {
System.out.println("Week start: " + weekStart);
System.out.println("Week end: " + weekEnd);
weekStart = weekEnd.plusDays(1);
weekEnd = weekStart.with(TemporalAdjusters.nextOrSame(LocalDate.SUNDAY));
}
// 输出最后一周的开始时间和结束时间(如果最后一周不完整,则不输出)
if (weekStart.isBefore(lastDayOfMonth) || weekStart.isEqual(lastDayOfMonth)) {
System.out.println("Last week start: " + weekStart);
System.out.println("Last week end: " + lastDayOfMonth);
}
}