java 根据出生日期计算年龄的方法

package com.common.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class AgeUtil {
          
   

     public static  Date parse(String strDate) throws ParseException {
          
     
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
            return sdf.parse(strDate);  
        }  
       //由出生日期获得年龄  
        public static  int getAge(Date birthDay) throws Exception {
          
     
            Calendar cal = Calendar.getInstance();  
            if (cal.before(birthDay)) {
          
     
                throw new IllegalArgumentException(  
                        "The birthDay is before Now.Its unbelievable!");  
            }  
            int yearNow = cal.get(Calendar.YEAR);  
            int monthNow = cal.get(Calendar.MONTH);  
            int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);  
            cal.setTime(birthDay);   
      
            int yearBirth = cal.get(Calendar.YEAR);  
            int monthBirth = cal.get(Calendar.MONTH);  
            int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);   
      
            int age = yearNow - yearBirth;  
      
            if (monthNow <= monthBirth) {
          
     
                if (monthNow == monthBirth) {
          
     
                    if (dayOfMonthNow < dayOfMonthBirth) age--;  
                }else{
          
     
                    age--;  
                }  
            }  
            return age;  
        }  
        
        public static void main(String args[]) {
          
    
             try {
          
   
                int  age = getAge(parse("2991-10-21"));
                System.out.println("age=="+age);
            } catch (ParseException e) {
          
   
                e.printStackTrace();
            } catch (Exception e) {
          
   
                e.printStackTrace();
            } 
  
              
        }
}
经验分享 程序员 微信小程序 职场和发展