問題:
發展一個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中文網其他相關文章!