В соответствии с ответом на Getting Duration using the new dateTime API вы должны использовать
Period p = Period.ofYears(1);
Важно понимать разницу между Duration
(точное количество наносекунд < 1 день) и Period
(переменная> 1 день).
Duration
не учитывает високосные дни, летнее время или секунды прыжка, например, и рассчитан на длительность менее суток, максимум через несколько дней. Так что это действительно лучше, если вы можете использовать Period
вместо этого.
Поскольку разные годы имеют разное количество дней, если вы хотите найти количество дней в году, вам нужно указать, в каком году вы говорите.
Если вы хотите, количество дней в конкретном году, вы можете использовать
Year.of(year).length()
Если вы хотите, дата истечения одного года с этого момента, вы можете использовать
LocalDate.now().plusYears(1)
или
LocalDate.now().plus(Period.ofYears(1))
Если вам нужно количество дней между двумя датами, вы можете использовать
ChronoUnit.DAYS.between(start, end)
Так, чтобы найти количество дней до даты, через год, вы можете использовать
LocalDate today = LocalDate.now();
long days = ChronoUnit.DAYS.between(today, today.plusYears(1));
Если вы хотите увидеть, является ли по-прежнему действует членство одного года, вы можете использовать
Period membershipLength = Period.ofYears(1);
LocalDate membershipStart = ...;
LocalDate membershipEnd = membershipStart.plus(membershipLength);
LocalDate today = LocalDate.now();
boolean memberShipEnded = today.isAfter(membershipEnd);
boolean membershipValid = !membershipEnded;
Возможный дубликат [Получение продолжительности с использованием нового API-интерфейса dateTime] (http://stackoverflow.com/questions/26454129/getting-duration-using-the-new-datetime-api) –