【发布时间】:2016-02-02 23:07:08
【问题描述】:
在 Java 8 及更高版本的java.time 框架中,Duration 类表示:
此类以秒和纳秒为单位模拟时间量或时间量。可以使用其他基于持续时间的单位来访问它,例如分钟和小时。此外,可以使用
DAYS单位,并将其视为正好等于 24 小时,从而忽略夏令时的影响。
然而,当我调用get 方法并传递ChronoUnit.DAYS 时,会引发异常。
LocalTime start = LocalTime.of ( 0 , 0 , 0 ); // First moment of the day.
LocalTime stop = LocalTime.of ( 2 , 0 , 0 ); // 2 AM.
Duration duration = Duration.between ( start , stop );
long days = duration.get ( ChronoUnit.DAYS );
线程“主”java.time.temporal.UnsupportedTemporalTypeException 中的异常:不支持的单位:天
我是误会了什么,还是误用了类?
【问题讨论】:
-
据我所知,在
Duration.get(...)中工作的唯一ChronoUnit常量是SECONDS和NANOS,但我从来不知道原因。 -
@f1sh 为什么?这是因为
Duration的内部状态只保存秒和纳秒。get(TemporalField)-方法旨在根据内部状态产生 部分 数量。相比之下,toDays()尝试确定以 1d=24h 为基数转换为天数的整数量。 -
我之前的评论中有错字。我不想说
get(TemporalField),而是说:get(TemporalUnit)。