在最近的项目开发中,遇到了一个问题就是计算年龄,网上虽然有很多这样的代码,但是计算出来的大多是周岁,即使有计算实岁的,也大多计算的不是很准确,代码整体的防护性也做的不好,于是决定自己写一个,把它整理成了一个工具类,方便以后的使用,
计算年龄其实不难,你觉得难,可能是因为你的逻辑理清晰,好好的理一下思路,其实并没有那么难!
计算年龄其实不难,你觉得难,可能是因为你的逻辑理清晰,好好的理一下思路,其实并没有那么难!
好了闲话少说,直接来说一下,这个工具类的功能吧!你传给他一个date型的数据,它会给你返回一个年龄数值,如果传过来的不是data,需要先把String型转换成data,如果输入的内容为空,则返回0岁!!好了下面直接上代码!!
/**
*
* 类描述:传入一个 date型的时间,得到当前的年龄 计算实岁(周岁)
* 如果传入的data为null,则返回age为0
* 类传参: date
* Creat by Lyb on 2018/5/23 14:57
*/
public class AgeUtils {
// 根据年月日计算年龄,birthTimeString:"1994-11-14"
public static int getAgeFromBirthTime(Date date) {
// 得到当前时间的年、月、日
if (date!=null){
Calendar cal = Calendar.getInstance();
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayNow = cal.get(Calendar.DATE);
//得到输入时间的年,月,日
cal.setTime(date);
int selectYear = cal.get(Calendar.YEAR);
int selectMonth = cal.get(Calendar.MONTH) + 1;
int selectDay =cal.get(Calendar.DATE);
// 用当前年月日减去生日年月日
int yearMinus = yearNow - selectYear;
int monthMinus = monthNow - selectMonth;
int dayMinus = dayNow - selectDay;
int age = yearMinus;// 先大致赋值
if (yearMinus <=0) {
age = 0;
}if (monthMinus < 0) {
age=age-1;
} else if (monthMinus == 0) {
if (dayMinus < 0) {
age=age-1;
}
}
return age;
}
return 0;
}
}
如果你是一个Sting型的时间,你就需要把它转化成date,网上一找一大堆,在这里我就不再写了,
如果有任何不对的地方欢迎提出来,大家一起学习进步!!