根据身份证号输出年龄 或根据出身日期计算年龄

这段代码提供了两个方法,分别根据出生日期字符串和身份证号码计算年龄。它使用了Calendar类来获取当前日期,并通过比较得出准确的年龄值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//根据年月日计算驾照年龄

 public static int getAgeFromBirthTime(String birthTimeString) {  
        // 先截取到字符串中的年、月、日  
        String strs[] = birthTimeString.trim().split("-");  
        int selectYear = Integer.parseInt(strs[0]);  
        int selectMonth = Integer.parseInt(strs[1]);  
        int selectDay = Integer.parseInt(strs[2]);  
        // 得到当前时间的年、月、日  
        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 int IdNOToAge(String IdNO){
        int leh = IdNO.length();
        String dates="";
        if (leh == 18) {
            dates = IdNO.substring(6, 10);
            SimpleDateFormat df = new SimpleDateFormat("yyyy");
            String year=df.format(new java.util.Date());
            int u=Integer.parseInt(year)-Integer.parseInt(dates);
            return u;
        }else{
            dates = IdNO.substring(6, 8);
            return Integer.parseInt(dates);
        }


    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值