Java 计算年龄

 1     public static String getAgeTxt(String birthTime,String beginTime,int level){
 2         if(StringUtils.isBlank(birthTime)||StringUtils.isBlank(beginTime)){
 3             System.out.println("参数中有空值!");
 4         }
 5         
 6         int year = 0,month=0,day=0,hour=0;
 7         
 8         Date birthDate = getDateByString(birthTime,"yyyy-MM-dd HH:mm:ss");
 9         Date beginDate = getDateByString(beginTime,"yyyy-MM-dd HH:mm:ss");
10         Calendar cBirthDate = Calendar.getInstance();
11         Calendar cBeginDate = Calendar.getInstance();
12         cBirthDate.setTime(birthDate);
13         cBeginDate.setTime(beginDate);
14         
15         if(cBeginDate.get(Calendar.YEAR) < cBirthDate.get(Calendar.YEAR)){
16             return "出生日期大于当前时间";
17         }
18         
19         //计算出生小时
20         if(cBeginDate.get(Calendar.HOUR_OF_DAY) < cBirthDate.get(Calendar.HOUR_OF_DAY)){
21             hour = cBeginDate.get(Calendar.HOUR_OF_DAY)+24 - cBirthDate.get(Calendar.HOUR_OF_DAY);
22             day = day-1;
23         }else{
24             hour = cBeginDate.get(Calendar.HOUR_OF_DAY) - cBirthDate.get(Calendar.HOUR_OF_DAY);
25         }
26         
27         //计算出生日
28         if(cBeginDate.get(Calendar.DAY_OF_MONTH)<cBirthDate.get(Calendar.DAY_OF_MONTH)){
29             day = day + cBeginDate.get(Calendar.DAY_OF_MONTH)+ cBirthDate.getActualMaximum(Calendar.DAY_OF_MONTH)-cBirthDate.get(Calendar.DAY_OF_MONTH);
30             month = month-1;
31         }else {
32             day = day + cBeginDate.get(Calendar.DAY_OF_MONTH)-cBirthDate.get(Calendar.DAY_OF_MONTH);
33         }
34         
35         //计算出生月
36         if(cBeginDate.get(Calendar.MONTH) < cBirthDate.get(Calendar.MONTH)){
37             month = month + cBeginDate.get(Calendar.MONTH)+12 - cBirthDate.get(Calendar.MONTH);
38             year = year -1;
39         }else{
40             month = month + cBeginDate.get(Calendar.MONTH) - cBirthDate.get(Calendar.MONTH);
41         }
42         
43         //计算出生年
44         year = year + cBeginDate.get(Calendar.YEAR) - cBirthDate.get(Calendar.YEAR);
45         
46         if(year >7){
47             return year+"岁";
48         }else if (year >0 && year <7){
49             if(month>0 && month <10){
50                 return year+"岁零"+month+"月";
51             }else if(month >=10 ){
52                 return year+"岁"+month+"月";
53             }else {
54                 if(day>0){
55                     return year+"岁零"+day+"天";
56                 }else{
57                     return year+"岁";
58                 }
59             }
60         }else {
61             if(month >0){
62                 if( day >0 && day <10){
63                     return month+"个月零"+day+"天";
64                 }else if(day >=10){
65                     return month+"个月"+day+"天";
66                 }else{
67                     return month+"个月";
68                 }
69             }else{
70                 if(day >0){
71                     if( hour >0 && hour <10){
72                         return day+"天零"+hour+"小时";
73                     }else if(hour >=10){
74                         return day+"天"+hour+"小时";
75                     }else{
76                         return day+"天";
77                     }
78                 }else{
79                     if(hour>0){
80                         return hour+"小时";
81                     }else{
82                         return "出生不足一小时";
83                     }
84                 }
85             }
86         }
87     }

 其中比较重要的几点

1、Calendar.getActualMaximum()计算对应的范围内最大值

2、计算年龄应该是从小到大计算年龄,这样方便计算后面的年龄(利用减法的原理);

posted @ 2017-06-26 19:48  平心先生  阅读(366)  评论(0编辑  收藏  举报