Чтобы получить первый понедельник, используйте:
LocalDate monday = start.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
Теперь вам нужно иметь дело с крайним случаем: что, если нет понедельника между start
и end
? Это будет означать, что вычисленный здесь понедельник наступает после end
:
if (monday.isAfter(end)) {
totalDates = List.of();
}
После этого вы можете получить последовательность понедельников с помощью удобного метода datesUntil
:
totalDates = monday.datesUntil(end, Period.ofWeeks(1)).collect(Collectors.toList());
Обратите внимание, что datesUntil
не включает дату окончания. Если вам нужно указать дату окончания, укажите end.plusDays(1)
.