在此代码中,
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);