【问题标题】:Java Duration between exception异常之间的 Java 持续时间
【发布时间】:2020-02-10 09:35:36
【问题描述】:

我使用 java Duration between 方法来计算 LocalTime 和 LocalDateTime 之间的持续时间,当我将 localTime 作为方法的第一个参数时它是有效的,但是当我颠倒顺序时它给出了异常 DateTimeException:

这项工作很好:

 LocalTime t1 = LocalTime.now();
 LocalDateTime t2 = LocalDateTime.now();
 System.out.println(Duration.between(t1, t2));

当我反转 agrs 时,它给了我一个例外:

 LocalTime t1 = LocalTime.now();
 LocalDateTime t2 = LocalDateTime.now();
 System.out.println(Duration.between(t2, t1));

Exception in thread "main" java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: 16:32:18.553 of type java.time.LocalTime

有人可以解释为什么我得到这个异常感谢任何帮助:=)

【问题讨论】:

  • 如果我问你从 9 月 19 日到现在还有多少时间,答案应该是什么? 2019 年 12:00 和 09:12:34?我的答案是:哪一天 09:12:34?这也是 Duration.between 提供的答案。

标签: java time java-8


【解决方案1】:

来自文档:Duration between

如果对象属于不同类型,则持续时间根据第一个对象的类型计算。例如,如果第一个参数是 LocalTime,则第二个参数将转换为 LocalTime。

所以基本上,由于您无法将 LocalTime 对象转换为 LocalDateTime,因此引发错误,日期信息不包含在 LocalTime 中。

【讨论】:

  • 就像无法从java.time.LocalTime获取LocalDate,因为LocalTime没有LocalDate。
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-15
相关资源
最近更新 更多