2016-04-05 2 views
0

Понятно, что с учетом Period (P2Y1M5D) и LocalDate (2016-04-05) можно получить конкретный Duration (PT18360H).Получить `Duration` из` Period` и `LocalDate`

Какой лучший (самый простой, самый короткий, наиболее читаемый) способ сделать это на Java?

Сначала мысль была Duration.between(start, start.plus(period)), но это выбрасывает «Неподдерживаемый блок: секунды».

Vanilla Java предпочитает, но ответы на использование библиотек (commons-lang, guava и т. Д.) Приветствуются.

+0

Любых downvoters хотят предложить некоторые улучшения? – OrangeDog

+0

Не думайте, что есть действительно способ сделать это. Годы и месяцы не переводят хорошо на дни, секунды и т. Д. – Savior

+0

@ Пиллар видит ответы на некоторые пути :) – OrangeDog

ответ

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))) 

 Смежные вопросы

  • Нет связанных вопросов^_^