Найти следующее появление дня недели в JSR-310 Для объекта JSR-310, такого как LocalDate, как я могу найти дату следующей среды (или любой другой день недели? LocalDate today = LocalDate.now(); LocalDate nextWed = ??? Ответ 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().
Ответ 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().