根据输入的 18 位身份证号码,获得该用户的实际年龄。

原文链接:https://blog.csdn.net/shaofan1/article/details/97106996
在原文上做了改动

package practice;

import java.text.SimpleDateFormat;
import java.util.Date;

public class IDCard {

public static int getAgeByCertId(String cardId) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    String nowDate = sdf.format(new Date());
    int yearNumber=0;
    if (cardId.length() == 18) {
        int cardYear = Integer.parseInt(cardId.substring(6, 10));
        int nowYear = Integer.parseInt(nowDate.substring(0, 4));
        System.out.println("cardYear :"+cardYear);
        System.out.println("nowYear :"+nowYear);
        if (cardYear < nowYear) {
            String cardMonth = cardId.substring(10, 14);
            String nowMonth = nowDate.substring(4, 8);
            System.out.println("cardMonth :"+cardMonth);
            System.out.println("nowMonth :"+nowMonth);     
                 
            int cardDay = Integer.parseInt(cardMonth.substring(0, 4));
            int nowDay = Integer.parseInt(nowMonth.substring(0, 4));
            System.out.println("cardDay :"+cardDay);
            System.out.println("nowDay :"+nowDay);
            
            yearNumber=nowYear - cardYear;;
            if(Integer.parseInt(cardMonth)>Integer.parseInt(nowMonth)){
            	 yearNumber = yearNumber;
            }else{
            	yearNumber--;
            }
            if(Integer.parseInt(cardMonth)==Integer.parseInt(nowMonth)){
                if (cardDay >=nowDay) {
                	yearNumber = yearNumber;
                }else{
                	yearNumber--;
                }
                return yearNumber;
            }  
    } else {
        return 0;
    }
}
	return yearNumber;     

}

public static void main(String[] args) {
	int ageByCertId = getAgeByCertId("450802199906204319");
	System.out.println(ageByCertId);
}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值