java 年份之间的计时单位差异

java chrono unit difference between year

我有下面的代码来计算两年之间的差异..

long yearsBetween = ChronoUnit.YEARS.between(
                customDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(),
                LocalDate.now());

我的日期值如下

customDate = 2022-03-07
LocalDate.now() = 2021-10-07

但是当我执行 ChronoUnit.YEARS.between 时,它 returns "0",但我期望 "1" 作为 return 值。我只想比较给定日期的年份并得到差异,不包括天数..

如果您想忽略 LocalDate 的月份和日期部分,您可以从每个 LocalDate 中获取年份然后比较它们,如下所示:

// Let's say we have two LocalDates, date1 and date2:
LocalDate date1 = LocalDate.of(2021, 10, 6);
LocalDate date2 = LocalDate.of(2022, 3, 7);

// We can get the year for each object and then subtract the two years:
long yearsBetween = date2.getYear() - date1.getYear();

// This will print 1 because 2022 is 1 year ahead of 2021:
System.out.println(yearsBetween);

作为旁注,yearsBetween 不需要是长数据类型(64 位整数)。 getYear() 方法 returns 一个 int(32 位整数),我怀疑您将不得不处理那么远的未来。我们可以只使用:

int yearsBetween = date2.getYear() - date1.getYear();

然后您只需插入 date1date2 的日期即可:

int yearsBetween = customDate.toInstant().atZone(ZoneId.systemDefault())
        .toLocalDate().getYear()
        - LocalDate.now().getYear();