經過Java日期時間API系列9-----Jdk8中java.time包中的新的日期時間API類的Period和Duration的區別中得知,Period能夠比較2個日期相差的年月日。年齡計算是2個日期相差的年的值,具體還要根據月日微調,若是小於生日年齡減1。下面使用Period能夠很是方便的計算年齡。html
/** * 計算年齡 * @param birthDay * @return int 年齡 */ public static int getAge(LocalDate birthDay){ Objects.requireNonNull(birthDay, "birthDay"); Period period = Period.between(birthDay, LocalDate.now()); if (period.getYears() < 0) { throw new DateTimeException("birthDay is before now!"); } else { return period.getYears(); } } /** * 計算年齡 * @param birthDay * @return int 年齡 */ public static int getAge(Date birthDay){ return getAge(DateTimeConverterUtil.toLocalDate(birthDay)); } /** * 計算年齡 * @param birthDay * @return int 年齡 */ public static int getAge(LocalDateTime birthDay){ return getAge(DateTimeConverterUtil.toLocalDate(birthDay)); }
測試代碼:java
/** * 年齡生日測試 */ @Test public void getAgeBirthDayTest(){ Date date = DateTimeCalculatorUtil.getDate(2000, 6, 4); System.out.println(DateTimeCalculatorUtil.getAge(date)); }
輸出:git
20
源代碼地址:https://github.com/xkzhangsan/xk-timegithub