首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Java ThreeTen BP获取人的年龄

利用Java ThreeTen BP获取人的年龄
EN

Stack Overflow用户
提问于 2015-07-17 18:19:30
回答 1查看 239关注 0票数 0

我想找一个人的年龄-考虑到他的生日(年,月,日)。我怎样才能用ThreeTenBP做到这一点呢?

编辑:我找到的一个选择是这样

代码语言:javascript
复制
    LocalDate birthdate = LocalDate.of(year, month, day);
    return (int) birthdate.until(LocalDate.now(), ChronoUnit.YEARS);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-12 22:37:28

你的代码在大多数国家都是正确的。它假设2月29日出生的人在非闰年的3月1日过生日。读维基百科

然而,这使得ThreeTen与自身不一致,不像Joda-time。

代码语言:javascript
复制
// if birthdate = LocalDate.of(2012, Month.FEBRUARY, 29);
System.out.println (birthdate.until(birthdate.plusYears(1), ChronoUnit.YEARS)); // display 0

如果希望getAge()与plusYears()同步,可以编写:

代码语言:javascript
复制
public static int getAge(LocalDate birthdate, LocalDate today)
{
  int age = today.getYears() - birthdate.getYears();
  if (birthdate.plusYears(age).isAfter(today))
      age--;
  return age;
}

另见:如何用Java计算某人的年龄?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31482267

复制
相关文章

相似问题

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