0

Java 8: Как получить LocalDateTime на сегодня в определённый час?

11

Проблема: Есть ли более удобный способ создания объекта LocalDateTime, представляющего сегодня в 6 утра, чем следующий код?

LocalDateTime todayAt6 = LocalDateTime.now().withHour(6).withMinute(0).withSecond(0).withNano(0);

Лично мне не нравится работать с минутами, секундами и наносекундами, когда я просто хочу указать now().withHours().

2 ответ(ов)

0

Альтернативой выражению LocalDate.now().atTime(6, 0) является следующий код:

import java.time.temporal.ChronoUnit;

LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).withHour(6);

Этот подход позволяет создать объект LocalDateTime, который будет установлен на начало текущего дня, а затем установить время на 6:00. Использование truncatedTo(ChronoUnit.DAYS) помогает избавиться от времени, оставляя только дату, после чего можно легко изменить часы с помощью withHour(6).

0

Да, это решение работает. Ваш код создает объект LocalDateTime, представляющий текущее время, но при этом устанавливает часы на 3, минуты на 0 и секунды на 0. Вот как это выглядит:

LocalDateTime.now().withHour(3).withMinute(0).withSecond(0);

Обратите внимание, что метод now() возвращает текущее время, а методы withHour(), withMinute() и withSecond() возвращают новый объект LocalDateTime с заданными вами значениями, сохраняя остальные части даты и времени. Таким образом, данный код корректно меняет только указанные поля, а остальные остаются без изменений.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь