После выяснения некоторых недоразумений, ответ был скорректирован, чтобы использовать часовой пояс по умолчанию клиента и вернуть Instant
.
Это означает, что вы можете использовать ZonedDateTime
с системной зоной для этого , посмотрите на следующий метод и его комментарии:
public static Instant determineNextNewsRelease() {
// get the current time using the default time zone of the client
ZonedDateTime now = ZonedDateTime.now(ZoneId.systemDefault());
// get 9 AM using the same day/date
ZonedDateTime nineAM = now.with(LocalTime.of(9, 0));
// and check if now is before nineAM
if (now.isBefore(nineAM)) {
return nineAM.toInstant();
} else {
return nineAM.plusDays(1).toInstant();
}
}
Используйте метод, подобный этому:
public static void main(String[] args) {
Instant nextNewsRelease = determineNextNewsRelease();
// and print the result
System.out.println("Next news will be released at "
+ nextNewsRelease.toEpochMilli() + " ("
+ ZonedDateTime.ofInstant(nextNewsRelease, ZoneId.systemDefault())
+ ")");
}
Выведен результат
Next news will be released at 1584518400000 (2020-03-18T09:00+01:00[Europe/Berlin])
Попробуйте это ...