Android (JAVA)输入一个年月日计算出年龄(实岁)!

    在最近的项目开发中,遇到了一个问题就是计算年龄,网上虽然有很多这样的代码,但是计算出来的大多是周岁,即使有计算实岁的,也大多计算的不是很准确,代码整体的防护性也做的不好,于是决定自己写一个,把它整理成了一个工具类,方便以后的使用,
    计算年龄其实不难,你觉得难,可能是因为你的逻辑理清晰,好好的理一下思路,其实并没有那么难!

    好了闲话少说,直接来说一下,这个工具类的功能吧!你传给他一个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,网上一找一大堆,在这里我就不再写了,

如果有任何不对的地方欢迎提出来,大家一起学习进步!!

猜你喜欢

转载自blog.csdn.net/APPLYB/article/details/80526312