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.It's 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();
            } 
  
              
        }
}

猜你喜欢

转载自blog.csdn.net/qq_45924975/article/details/120966098