根据
Getting Duration using the new dateTime API的响应,你应该使用
Period p = Period.ofYears(1);
理解Duration(精确的纳秒数)和Period(变量)之间的差异很重要。
持续时间不考虑闰年,夏令时或闰秒,并且期望持续时间小于一天,最多几天。所以,如果你能够使用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);
boolean isMember = !LocalDate.now().isAfter(membershipEnd);