将ZonedDateTime转换为一天的结束时间



在此代码中,

Instant i = Instant.ofEpochMilli(inputDate);
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instance, ZoneId.of(marketplaceIdToZoneMap.get(timeZone)));

我只想这个时区日期时间是一天的结束,

如果zonedDateTime的值为:2019-11-14 12:00:99

输出应为2019-11-14 23:59:59

如果你想要一天中的最后一秒,你可以使用:

ZonedDateTime eod = zonedDateTime.with(LocalTime.of(23, 59, 59));

如果你想要一天中的最长时间,你可以使用:

ZonedDateTime eod = zonedDateTime.with(LocalTime.MAX);

请注意,在某些奇怪的情况下,23:59:59可能不是特定日期的有效时间(通常是时区变化复杂的历史日期(。

一个简单的解决方案是手动设置您想要的值:

zonedDateTime.withHour(23).withMinute(59).withSecond(59);

另一种解决方案可以是重置小时/分钟/秒,增加一天,删除一秒:

zonedDateTime.truncatedTo(ChronoUnit.DAYS).plusDay(1).minusSecond(1);

相关内容

最新更新