码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-12-02 22:06:24      阅读:509      评论:0      收藏:0      [点我收藏+]

标签:exce   stat   show   return   年龄   add   util   etag   end   

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

不废话,上需求 上算法:

 

类似于上面这个 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;
}

 

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

标签:exce   stat   show   return   年龄   add   util   etag   end   

原文地址:http://www.cnblogs.com/achen0502/p/6127228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!