Получить следующий LocalDateTime для данного дня недели
Я хочу создать экземпляр LocalDateTime
в дату/время следующего (например) в понедельник.
есть ли какой-либо метод в Java Time API, или я должен сделать вычисления, сколько дней между текущей и конечной датами, а затем использовать LocalDateTime.из() метод?
1 ответов
нет необходимости делать какие-либо расчеты вручную.
вы можете настроить заданную дату с помощью регулятора с помощью метода LocalDateTime.with(adjuster)
. Имеется встроенный регулятор на следующий день недели:TemporalAdjusters.next(dayOfWeek)
:
возвращает регулятор следующего дня недели, который настраивает дату на первое появление указанного дня недели после корректируемой даты.
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.now();
LocalDateTime nextMonday = dateTime.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println(nextMonday);
}
этот код вернет следующий понедельник на основе текущей даты.
используя статический импорт, это упрощает чтение кода:
LocalDateTime nextMonday = dateTime.with(next(MONDAY));
обратите внимание, что если текущая дата уже в понедельник, этот код вернется в следующий понедельник (т. е. понедельник со следующей недели). Если вы хотите сохранить текущую дату в этом случае, вы можете использовать nextOrSame(dayOfWeek)
.