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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM