我正在尝试学习新的 Date & Time API .除了最后一行,我的代码可以正常工作:
LocalDate current=LocalDate.now();
System.out.println(current);
LocalDate personaldate=LocalDate.of(2011,Month.AUGUST, 15);
System.out.println(personaldate);
LocalDate afterten=current.plus(Period.ofDays(10));
System.out.println(afterten);
// error occurs here
System.out.println(afterten.plus(Duration.ofDays(3)));
当我尝试添加以天为单位的持续时间时,它会生成错误。谁能帮我理解为什么?
错误:
Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Seconds
at java.time.LocalDate.plus(LocalDate.java:1241)
at java.time.LocalDate.plus(LocalDate.java:137)
at java.time.Duration.addTo(Duration.java:1070)
at java.time.LocalDate.plus(LocalDate.java:1143)
at TestClass.main(TestClass.java:15)
最佳答案
虽然接受的答案是完全正确的,但当我遇到这个问题时,我正在寻找一个简单的解决方案来解决我的问题。
我发现使用 Period 不允许我计算两个 LocalDate 对象之间的天数。 (告诉我这两者之间有多少年、几个月和几天,是的,但不仅仅是那几天。)
但是,要获得我想要的结果就像将 LocalDate 方法“atStartOfDay”添加到我的每个对象一样简单。
所以我的错误代码:
long daysUntilExpiry = Duration.between(LocalDate.now(), training.getExpiryDate()).toDays();
简单地调整为:
long daysUntilExpiry = Duration.between(LocalDate.now().atStartOfDay(), training.getExpiryDate().atStartOfDay()).toDays();
这样做会使对象变成可以与 Duration 一起使用的 LocalDateTime 对象。因为两个对象都将一天的开始作为“时间”部分,所以没有区别。
希望这对其他人有帮助。
关于java - Duration.ofDays 生成 UnsupportedTemporalTypeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440874/