首页 > 代码库 > 通过出生年月日按要求计算年龄的算法

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

最近项目里碰到个需求,有关于出生年月日计算年龄的,无奈网上搜了搜,感觉都不满足客户的需求只得自己动手了。

不废话,上需求 上算法:

 

类似于上面这个 yyyy-MM-dd 给一个这个值 算出来了多大年龄
l 不足一月新生儿显示日龄。
2 不足一年婴幼儿显示月龄+日龄,如3个月12天。
3 超过1周岁到12周岁,显示年龄+月龄,如12岁3个月。

 

public static String getAgeAchen(Context context, Calendar birthday, Calendar now) throws Exception {
// Calendar birthday=new GregorianCalendar(2008,8,12);
// Calendar now=Calendar.getInstance();
// if (birthday.after(now)) {
// throw new IllegalArgumentException("Can‘t be born in the future");
// }
String mString = "";

int day = now.get(Calendar.DAY_OF_MONTH) - birthday.get(Calendar.DAY_OF_MONTH);
int month = now.get(Calendar.MONTH) + 1 - birthday.get(Calendar.MONTH);
int year = now.get(Calendar.YEAR) - birthday.get(Calendar.YEAR);

if ((year<=0 && month<=0 && day<0) || (year<=0 && month==12 && day<0)) {
DesityUtil.showToast(context, "请选择正确的出生年月");
return mString;
}
if (day < 0) {
month-=1;
now.add(Calendar.MONTH, -1);//得到上一个月,用来得到上个月的天数
day = day + now.getActualMaximum(Calendar.DAY_OF_MONTH);//得到该月天数
}
if (month < 0) {
month = (month + 12) - 12;
year-=1;
}
if (year > 0) {
if (year > 12) {
mString = year + "岁" ;
}else {
if (month != 0) {
mString = year + "岁" + month + "个月";
} else {
mString = year + "岁";
}
}
}else {
if (month > 0 && month != 12) {
if (day != 0) {
mString = month + "个月" + day + "天";
}else {
mString = month + "个月" ;
}
}else {
mString = day + "天";
}
}
return mString;
}

 

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