经过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