将 ZonedDateTime 转换为当天结束
Convert ZonedDateTime to end of the day
在此代码中,
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.withHour(23).withMinute(59).withSecond(59);
另一个解决方案可能是重置 hours/minutes/second,添加一天,删除一秒:
zonedDateTime.truncatedTo(ChronoUnit.DAYS).plusDay(1).minusSecond(1);
如果你想要当天的最后一秒,你可以使用:
ZonedDateTime eod = zonedDateTime.with(LocalTime.of(23, 59, 59));
如果你想要一天中的最长时间,你可以使用:
ZonedDateTime eod = zonedDateTime.with(LocalTime.MAX);
请注意,在某些奇怪的情况下,23:59:59 可能不是特定日期的有效时间(通常是时区变化复杂的历史日期)。
在此代码中,
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.withHour(23).withMinute(59).withSecond(59);
另一个解决方案可能是重置 hours/minutes/second,添加一天,删除一秒:
zonedDateTime.truncatedTo(ChronoUnit.DAYS).plusDay(1).minusSecond(1);
如果你想要当天的最后一秒,你可以使用:
ZonedDateTime eod = zonedDateTime.with(LocalTime.of(23, 59, 59));
如果你想要一天中的最长时间,你可以使用:
ZonedDateTime eod = zonedDateTime.with(LocalTime.MAX);
请注意,在某些奇怪的情况下,23:59:59 可能不是特定日期的有效时间(通常是时区变化复杂的历史日期)。