Java 根据生日获取年龄(周岁)

394 阅读1分钟

Java 根据生日获取年龄(周岁)。 

/**
 * @author zhnagzhixiang on 2020/8/4
*/
public class SysResourceServiceImpl {

    // 根据年月日计算年龄,birthTimeString:"1994-11-14"
    public static int getAgeFromBirthTime(String birthTimeString) {
        // 先截取到字符串中的年、月、日
        int selectYear = Integer.parseInt(birthTimeString.substring(0, 4));
        int selectMonth = Integer.parseInt(birthTimeString.substring(4, 6));
        int selectDay = Integer.parseInt(birthTimeString.substring(6, 8));
        // 得到当前时间的年、月、日
        Calendar cal = Calendar.getInstance();
        int yearNow = cal.get(Calendar.YEAR);
        int monthNow = cal.get(Calendar.MONTH) + 1;
        int dayNow = cal.get(Calendar.DATE);

        // 用当前年月日减去生日年月日
        int yearMinus = yearNow - selectYear;
        int monthMinus = monthNow - selectMonth;
        int dayMinus = dayNow - selectDay;

        int age = yearMinus;// 先大致赋值
        if (yearMinus < 0) {// 选了未来的年份
            age = 0;
        } else if (yearMinus == 0) {// 同年的,要么为1,要么为0
            if (monthMinus < 0) {// 选了未来的月份
                age = 0;
            } else if (monthMinus == 0) {// 同月份的
                if (dayMinus < 0) {// 选了未来的日期
                    age = 0;
                } else if (dayMinus >= 0) {
                    age = 1;
                }
            } else if (monthMinus > 0) {
                age = 1;
            }
        } else if (yearMinus > 0) {
            if (monthMinus < 0) {// 当前月>生日月
            } else if (monthMinus == 0) {// 同月份的,再根据日期计算年龄
                if (dayMinus < 0) {
                } else if (dayMinus >= 0) {
                    age = age + 1;
                }
            } else if (monthMinus > 0) {
                age = age + 1;
            }
        }
        return age;
    }

    public static void main(String[] args) {
        String birthTimeString[] = {
                "20090929",
                "20100505",
                "20100222",
                "20100510",
                "20091206",
                "20091014",
                "20081123",
                "20091116",
                "20100712",
                "20100531",
                "20090808",
                "20091025",
                "20091018",
                "20100610",
                "20091101",
                "20100120",
                "20100408",
                "20090707",
                "20091212",
                "20090916",
        };
        for (int i=0;i<birthTimeString.length;i++) {
            System.out.println(getAgeFromBirthTime(birthTimeString[i]) - 1);
        }
    }
}