Ответ 1
Ответ зависит от вашего определения "в следующую среду"; -)
JSR-310 предоставляет два варианта, используя класс TemporalAdjusters.
Первый вариант next():
LocalDate input = LocalDate.now();
LocalDate nextWed = input.with(TemporalAdjusters.next(DayOfWeek.WEDNESDAY));
Второй вариант nextOrSame():
LocalDate input = LocalDate.now();
LocalDate nextWed = input.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
Эти два варианта различаются в зависимости от того, какой день недели имеет входная дата.
Если дата ввода - 2014-01-22 (среда), то:
-
next()
вернется 2014-01-29, через неделю -
nextOrSame()
вернется в 2014-01-22, то же, что и вход
Если дата ввода - 2014-01-20 (понедельник), то:
-
next()
вернется 2014-01-22 -
nextOrSame()
вернется 2014-01-22
т. next()
всегда возвращает более позднюю дату, тогда как nextOrSame()
вернет дату ввода, если она соответствует.
Обратите внимание, что оба варианта выглядят намного лучше со статическим импортом:
LocalDate nextWed1 = input.with(next(WEDNESDAY));
LocalDate nextWed2 = input.with(nextOrSame(WEDNESDAY));
TemporalAdjusters
также включает в себя методы сравнения previous()
и previousOrSame()
.