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();
然后您只需插入 date1
和 date2
的日期即可:
int yearsBetween = customDate.toInstant().atZone(ZoneId.systemDefault())
.toLocalDate().getYear()
- LocalDate.now().getYear();
我有下面的代码来计算两年之间的差异..
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();
然后您只需插入 date1
和 date2
的日期即可:
int yearsBetween = customDate.toInstant().atZone(ZoneId.systemDefault())
.toLocalDate().getYear()
- LocalDate.now().getYear();