问题:
开发一个 Java 方法,以整数形式返回以年为单位的年龄。该方法采用代表出生日期的 Date 对象。
当前实现:
public int getAge() { long ageInMillis = new Date().getTime() - getBirthDate().getTime(); Date age = new Date(ageInMillis); return age.getYear(); }
限制:
使用 JDK 8 改进的解决方案:
JDK 8 引入了使用 LocalDate 类的改进解决方案:
public class AgeCalculator { public static int calculateAge(LocalDate birthDate, LocalDate currentDate) { if ((birthDate != null) & (currentDate != null)) { return Period.between(birthDate, currentDate).getYears(); } else { return 0; } } }
JUnit测试:
public class AgeCalculatorTest { @Test public void testCalculateAge_Success() { // setup LocalDate birthDate = LocalDate.of(1961, 5, 17); // exercise int actual = AgeCalculator.calculateAge(birthDate, LocalDate.of(2016, 7, 12)); // assert Assert.assertEquals(55, actual); } }
建议:
升级到 JDK 8,以获得改进且可靠的年龄计算解决方案。
以上是如何使用 Java 可靠地计算年龄?的详细内容。更多信息请关注PHP中文网其他相关文章!