Java日期时间API系列34-----Jdk8中java.time包中的新的日期时间API类应用,使用Period计算生日。

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

相关文章
相关标签/搜索