java根据生日精确计算年龄

 1 package getAge;  2 import java.text.SimpleDateFormat;  3 import java.util.Calendar;  4 import java.util.Date;  5 
 6 /**
 7  * 根据用户生日精确计算年龄  8  * 用Calender对象取得当前日期对象--从对象中分别取出年月日  9  * @author Administrator 10  * 11  */
12 public class getAgeByBirthday{ 13     public static int getAgeByBirth(Date birthday){ 14         //Calendar:日历
15         /*从Calendar对象中或得一个Date对象*/
16         Calendar cal = Calendar.getInstance(); 17         /*把出生日期放入Calendar类型的bir对象中,进行Calendar和Date类型进行转换*/
18         Calendar bir = Calendar.getInstance(); 19  bir.setTime(birthday); 20         /*若是生日大于当前日期,则抛出异常:出生日期不能大于当前日期*/
21         if(cal.before(birthday)){ 22             throw new IllegalArgumentException("The birthday is before Now,It's unbelievable"); 23  } 24         /*取出当前年月日*/
25         int yearNow = cal.get(Calendar.YEAR); 26         int monthNow = cal.get(Calendar.MONTH); 27         int dayNow = cal.get(Calendar.DAY_OF_MONTH); 28         /*取出出生年月日*/
29         int yearBirth = bir.get(Calendar.YEAR); 30         int monthBirth = bir.get(Calendar.MONTH); 31         int dayBirth = bir.get(Calendar.DAY_OF_MONTH); 32         /*大概年龄是当前年减去出生年*/
33         int age = yearNow - yearBirth; 34         /*若是出当前月小与出生月,或者当前月等于出生月可是当前日小于出生日,那么年龄age就减一岁*/
35         if(monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)){ 36             age--; 37  } 38         return age; 39  } 40     /*main方法测试*/
41     public static void main(String[] args){ 42         SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd"); 43         String sftBirth = "1980-4-25"; 44         Date date = null; 45         try{ 46             date = sft.parse(sftBirth); 47         }catch(Exception e){ 48  e.printStackTrace(); 49  } 50         int age = getAgeByBirthday.getAgeByBirth(date); 51         System.out.print("年龄=" + age + "岁"); 52  } 53 }
相关文章
相关标签/搜索