java - Duration.ofDays 生成 UnsupportedTemporalTypeException

标签 java duration java-time

我正在尝试学习新的 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/

相关文章:

Java 没有关于所有 IANA 时区的信息

java - 从 1970 到 2020.01.01 的毫秒数

Java时间解析 "Jun 26th 2021, 04:30:15 pm NY"

java - 如何将不同的对象(具有相同的父对象)传递给构造函数以及如何在构造函数中识别该对象的类型

java - 将动态 Web 项目从 netbeans 转换为 eclipse?

ios - 如何在玩 Titanium 时返回 5 秒,单击按钮时应该会发生这种情况

c# - 从 0 :00 or 00:00 to 00:00:00 转换持续时间

Java向父类(super class)添加变量

java - 在 SQLCipher 中设置密码

ruby-on-rails - 在 Rails 中使用持续时间作为哈希键