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、计算年龄应该是从小到大计算年龄,这样方便计算后面的年龄(利用减法的原理);

时间: 2024-10-24 02:20:34

Java 计算年龄的相关文章

java计算年龄

精确到天计算年龄 public static int getAgeByCardId(String card) throws Exception { Integer len = card.length(); if (len == CHINA_ID_MIN_LENGTH) { card = conver15CardTo18(card); } String birthDate = card.substring(6, 14); SimpleDateFormat sdf = new SimpleDateF

js/java中计算年龄

js中计算年龄  /**  * 将生日转换成年龄  */  function birthDayToAge(){  var aDate=new Date();  var thisYear = aDate.getFullYear();  var thisMonth = aDate.getMonth()+1;  var thisDay = aDate.getDate();  var currentDate = thisYear+"-"+thisMonth+"-"+this

Java 根据年月日精确计算年龄

1 import java.text.SimpleDateFormat; 2 import java.util.Calendar; 3 import java.util.Date; 4 5 /** 6 * Created by qing on 2017/3/28. 7 */ 8 public class AgeUtils { 9 // 根据年月日计算年龄,birthTimeString:"1994-11-14" 10 public static int getAgeFromBirthT

java实现根据身份证计算年龄的两种方式

第一种(推荐使用): import org.apache.hadoop.hive.ql.exec.UDF; import java.util.Calendar; public class GetAge extends UDF { public String evaluate(String sfzjh){ if(sfzjh == null || "".equals(sfzjh) ){ return "身份证件号有误,无法计算年龄"; } if (sfzjh.lengt

java根据身份证计算年龄

/** * 根据身份证计算年龄 * * @param idcard * @return */ public static Integer idCardToAge(String idcard) { Integer selectYear = Integer.valueOf(idcard.substring(6, 10)); //出生的年份 Integer selectMonth = Integer.valueOf(idcard.substring(10, 12)); //出生的月份 Integer

java 根据生日计算年龄

根据生日计算年龄可以通过Calendar实现.最简单可以考虑get(Calendar.DAY_OF_YEAR)来简单修正年龄,但是遇到生日在闰年的2月29之后,或者今年是闰年的2月29之后可能出现计算不准,误差一天.所以还是老实判断年月日好了. // 根据生日计算年龄,判断了年月日,比简单的年份上计算更精准 public static int getAge(Date birthDay) throws Exception {         Calendar cal = Calendar.getI

Java 计算中英文长度的若干种方法

在项目开发中经常碰到到输入字符的校验,特别是中英文混合在一起的校验.而为了满足校验的需求,有时需要计算出中英文的长度. 本文将通过几种常用的方法实现长度的计算: <span style="font-size:18px;">import java.io.UnsupportedEncodingException; /** * 中英文校验的处理 * @author a123demi * */ public class EnChValidate { public static vo

iOS 获取当前时间以及计算年龄(时间差)

获取当前时间 NSDate *now = [NSDate date]; NSLog(@"now date is: %@", now); NSCalendar *calendar = [NSCalendar currentCalendar]; NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarU

通过出生年月日按要求计算年龄的算法

最近项目里碰到个需求,有关于出生年月日计算年龄的,无奈网上搜了搜,感觉都不满足客户的需求只得自己动手了. 不废话,上需求 上算法: 类似于上面这个 yyyy-MM-dd 给一个这个值 算出来了多大年龄 l 不足一月新生儿显示日龄.2 不足一年婴幼儿显示月龄+日龄,如3个月12天.3 超过1周岁到12周岁,显示年龄+月龄,如12岁3个月. public static String getAgeAchen(Context context, Calendar birthday, Calendar no