使用新的日期时间 API 获取持续时间
我想得到一个表示3年持续时间的java.time.Duration
实例,
我发现了2种方法(请参阅下面的代码)。
public static void main(String[] args) {
Duration d1 = Duration.of(3, ChronoUnit.YEARS); //Runtime Exception
Duration d2 = ChronoUnit.YEARS.getDuration().multipliedBy(3);
System.out.println("d2="+d2.toDays()); //OUTPUT: d2=1095
}
第一种方法 , 在运行时引发以下异常:d1
Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unit must not have an estimated duration at java.time.Duration.plus(Unknown Source) at java.time.Duration.of(Unknown Source) at mod7.vehicalc.Test.main(Test.java:26)
第二种方法 ,按预期方式工作。d2
造成这种差异的原因是什么?