从`Period`和`LocalDate`获取`Duration`

时间:2016-04-05 15:30:34

标签: java datetime java-time

从概念上讲,如果从Period(P2Y1M5D)和LocalDate(2016-04-05)开始,可以推导出具体的Duration(PT18360H)。

在Java中这样做的最佳(最简单,最简短,最易读)方式是什么?

首先想到的是Duration.between(start, start.plus(period)),但是会抛出"不支持的单位:秒"。

Vanilla Java首选,但欢迎使用库(commons-lang,guava等)的答案。

1 个答案:

答案 0 :(得分:3)

仅使用java.time

Duration duration = Duration.between(
    LocalDateTime.of(start, LocalTime.MIDNIGHT),
    LocalDateTime.of(start, LocalTime.MIDNIGHT).plus(period)
);

甚至更短,但结果不太明确:

Duration duration = Duration.ofDays(ChronoUnit.DAYS.between(start, start.plus(period)))