ZonedDateTime如何设置最小或最大时间?

时间:2018-02-19 14:38:05

标签: java time java-8 java-time zoneddatetime

如何将实例化ZonedDateTime的时间更改为f.e。:'java.time.LocalTime.MIN'或'java.time.LocalTime.MAX'?

ZonedDateTime date = ZonedDateTime.now();

这是一个好的开始:ZonedDateTime startDate = date.withHour(0).withMinute(0).withSecond(0).withNano(0);

但最好有: ZonedDateTime startDate = date.withTime(LocalTime.Min);

3 个答案:

答案 0 :(得分:3)

正确的方法是:

data = JSON.parse(response_body).fetch('data')
uri_list = data.select { |img| img['is_preferred'] }.map { |img| img['uri'] }

有人可能很容易期望ncl_convert2nc System.out.println(date.toLocalDate().atStartOfDay(date.getZone())); System.out.println(date.toLocalDate() .plusDays(1) .atStartOfDay(date.getZone()) .minusNanos(1)); 完成这项工作,它可能会给你想要的结果。请注意,由于过渡到夏令时(DST)和其他异常,有(罕见)情况,当天00:00(这是date.with(LocalTime.MIN)的定义)在该区域中不存在。上面清楚地考虑了这一点,并且让读者毫不怀疑在这种情况下会发生什么。

但是,如果您只需要比较日期,只需摆脱一天中的时间并比较日期:

date.with(LocalTime.MAX)

答案 1 :(得分:1)

你可以使用.with(TemporalAdjuster)。 您可以使用TemporalAdjust.adjustInto(Temporal)调整TemporalAdjuster:

https://docs.oracle.com/javase/8/docs/api/java/time/temporal/TemporalAdjuster.html https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html

答案 2 :(得分:1)

ZonedDateTime中Time的最小值非常短:

ZonedDateTime.now().truncatedTo(ChronoUnit.DAYS);

它将从ZonedDateTime切断(设置为零):小时,分钟,秒和纳米。

这是ZonedDateTime中Time的最大值:

ZonedDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(LocalTime.MAX.getNano());