Вы можете использовать LocalDate#atTime
:
LocalDate.now().atTime(LocalDateTime.now().getHour(), 0, 0);
Это даст вам текущую дату с часами, минутами и секундами, установленными в 0.
И для получения миллисекунд в UTC:
LocalDate.now().atTime(LocalDateTime.now().getHour(), 0, 0).toInstant(ZoneOffset.UTC).toEpochMilli();
Джон Скит замечает, что вызов now
может дать неожиданные результаты в угловых случаях. Конечно, мы можем вызвать его один раз, а затем преобразовать в LocalDate
с указанным решением:
var currentTime = LocalDateTime.now();
var currentDate = currentTime.toLocalDate();
Или наоборот - сначала набрать LocalDate
и использовать LocalDate#atStartOfDay
.