定义具有整数的日期差的最大时间单位



我有两个约会:

LocalDate date1 = LocalDate.now().minusDays(40);
LocalDate date2 = LocalDate.now();

我想弄清楚我可以选择的最大的时间单位是什么来定义2之间的差异(天、月、年),并得到它的数字。对我来说,我认为完美的解决方案是,如果java.timeapi的Duration也有toMonthsParttoYearsPart,因为它有toDaysPart。我可以这样做:

Duration dif = Duration.between(date1, date2);
long daysPart = dif.toDaysPart();
if (daysPart > 0) {
return ChronoUnit.DAYS.between(date1, date2);
}
long monthPart = dif.getMonthsPart();
if (monthPart > 0) {
return ChronoUnit.MONTHS.between(date1, date2);
}
long yearPart = dif.getYearsPart();
if (yearPart > 0) {
return ChronoUnit.YEARS.between(date1, date2);
}
throw new Exception("no difference");

但是在API中没有这样的方法。是否有其他包可以提供此功能,或者您是否知道实现我的目标的其他方法?

TL;DR

Period代替Duration

:

import java.time.LocalDate;
import java.time.Period;
class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate fortyDaysAgo = today.minusDays(40);
Period period = Period.between(fortyDaysAgo, today);
System.out.println(period);
System.out.printf("%d year(s) %d month(s) %d day(s)%n", period.getYears(), period.getMonths(),
period.getDays());
}
}

示例运行的输出:

P1M9D
0 year(s) 1 month(s) 9 day(s)
<<p>

在线演示/kbd>从Trail: Date Time了解更多关于现代Date-Time API的信息.

相关内容

  • 没有找到相关文章

最新更新