我有一个春季启动后端,我想每天在UTC + 1上午9点发布新闻。

我想得到一个java.time.Instant


今天上午9点UTC + 1
明天上午9点UTC + 1


根据我们是否凌晨9点,我该如何为所有客户可靠地做到这一点?

最佳答案

您可以这样使用OffsetDateTime

LocalTime targetTime = LocalTime.of(9, 0);

OffsetDateTime dateTime = OffsetDateTime.now(ZoneOffset.ofHours(1));
if (dateTime.toLocalTime().compareTo(targetTime) >= 0)
    dateTime = dateTime.plusDays(1);
Instant instant = dateTime.with(targetTime).toInstant();

System.out.println(instant);


输出(在2020-03-17T14:47 + 01:00执行)

2020-03-18T08:00:00Z


如果恰好保持今天上午9点,请将>=更改为>

10-01 19:20