Получить следующий 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).