使用Java ThreeTen BP获得人的年龄

时间:2015-07-17 18:19:30

标签: threetenbp

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

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

    LocalDate birthdate = LocalDate.of(year, month, day);
    return (int) birthdate.until(LocalDate.now(), ChronoUnit.YEARS);

1 个答案:

答案 0 :(得分:1)

您的代码在大多数国家/地区都是正确的。它假定2月29日出生的人在3月1日的非闰年生日。 阅读How do I calculate someone's age in Java?

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

// if birthdate = LocalDate.of(2012, Month.FEBRUARY, 29);
System.out.println (birthdate.until(birthdate.plusYears(1), ChronoUnit.YEARS)); // display 0

如果你想让getAge()与plusYears()对称,你可以写:

public static int getAge(LocalDate birthdate, LocalDate today)
{
  int age = today.getYears() - birthdate.getYears();
  if (birthdate.plusYears(age).isAfter(today))
      age--;
  return age;
}

另请参阅:{{3}}