首页 > 代码库 > 通过出生年月日按要求计算年龄的算法
通过出生年月日按要求计算年龄的算法
最近项目里碰到个需求,有关于出生年月日计算年龄的,无奈网上搜了搜,感觉都不满足客户的需求只得自己动手了。
不废话,上需求 上算法:
类似于上面这个 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;
}
通过出生年月日按要求计算年龄的算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。