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

相關文章
相關標籤/搜索