我想找一个人的年龄 - 考虑到他的出生日期(年,月,日)。我怎么能用ThreeTenBP做到这一点?
编辑: 我找到的一个选项是这样的
LocalDate birthdate = LocalDate.of(year, month, day);
return (int) birthdate.until(LocalDate.now(), ChronoUnit.YEARS);
答案 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}}