我有一个春季启动后端,我想每天在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点,请将
>=
更改为>
。