Код: Выделить всё
LocalDate now = LocalDate.now();
Stream.iterate(now , localDate -> localDate.with(TemporalAdjusters.next(DayOfWeek.FRIDAY)))
.skip(1) // skip today
.limit(10)
.forEach(System.out::println);
Код: Выделить всё
2021-10-22
2021-10-29
2021-11-05
2021-11-12
2021-11-19
2021-11-26
2021-12-03
2021-12-10
2021-12-17
2021-12-24
Я искал ТАК и нашел несколько способов. для расчета n-й пятницы месяца, например этой
Код: Выделить всё
public static LocalDate nthFridayOfMonth(LocalDate localDate, int week) {
return localDate.with(TemporalAdjusters.dayOfWeekInMonth(week, DayOfWeek.FRIDAY));
}
Как изменить этот метод, чтобы он возвращал логическое значение, если задана LocalDate это первая, вторая или третья пятница месяца? Или использовать этот метод для реализации другого метода, который делает то, что мне нужно?
В идеале я хочу использовать приведенный выше поток и использовать метод, который возвращает логическое значение в качестве фильтра:
Код: Выделить всё
LocalDate now = LocalDate.now();
Stream.iterate(now , localDate -> localDate.with(TemporalAdjusters.next(DayOfWeek.FRIDAY)))
.skip(1) // skip today
.filter(d -> is1st2ndOr3rdFriday(d))
.limit(10)
.forEach(System.out::println);
Код: Выделить всё
2021-11-05
2021-11-12
2021-11-19
2021-12-03
2021-12-10
2021-12-17
2022-01-07
2022-01-14
2022-01-21
2022-02-04
Подробнее здесь: https://stackoverflow.com/questions/696 ... day-in-a-m
Мобильная версия