首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >年之间的java计时单位差

年之间的java计时单位差
EN

Stack Overflow用户
提问于 2021-10-07 03:55:15
回答 1查看 67关注 0票数 0

我有下面的代码来获得两年之间的差额..

代码语言:javascript
复制
long yearsBetween = ChronoUnit.YEARS.between(
                customDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(),
                LocalDate.now());

我的日期值如下

代码语言:javascript
复制
customDate = 2022-03-07
LocalDate.now() = 2021-10-07

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

EN

Stack Overflow用户

回答已采纳

发布于 2021-10-07 04:18:15

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

代码语言:javascript
复制
// 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()方法返回一个整数(32位整数),我怀疑您在将来是否需要处理这么远的年份。我们可以只使用:

代码语言:javascript
复制
int yearsBetween = date2.getYear() - date1.getYear();

然后,您只需在date1date2类似的位置插入日期即可:

代码语言:javascript
复制
int yearsBetween = customDate.toInstant().atZone(ZoneId.systemDefault())
        .toLocalDate().getYear()
        - LocalDate.now().getYear();
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69475265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档