通过身份证号码获取年龄和出生日期

一 获取年龄

首先要在实体类中定义年龄(age)和身份证号码(idcard)

//身份证号码
	private String idcard;
		public String getIdcard() {
		return idcard;
	}

	public void setIdcard(String idcard) {
		this.idcard = idcard;
	}
//年龄
	private Integer age;
	public Integer getAge() {
		return getAgeByIdcard(idcard);
	}

	public void setAge(String idcard) {
		this.age = getAgeByIdcard(idcard);
	}

然后通过身份证号码获取年龄

 /**
     * 根据身份证号获取年龄
     * @param IDCard
     * @return
     */
    public static Integer getAgeByIdcard(String idcard){
        Integer age = 0;
        //获取当前时间
        Calendar cal = Calendar.getInstance();
        Date date = new Date();
            //15位身份证号
            if (idcard.length() == 15){
                // 身份证上的年份(15位身份证为1980年前的)
                String uyear = "19" + idcard.substring(6, 8);
                // 身份证上的月份
                String uyue = idcard.substring(8, 10);
                // 当前年份
                int fyear = cal.get(Calendar.YEAR);
                // 当前月份
                int fyue = cal.get(Calendar.MONTH) + 1;
                if (Integer.parseInt(uyue) <= fyue) {
                    age = fyear - Integer.parseInt(uyear) + 1;
                    // 当前用户还没过生
                } else {
                    age = fyear - Integer.parseInt(uyear);
                }
                //18位身份证号
            }else if(idcard.length() == 18){
                // 身份证上的年份
                String year = idcard.substring(6).substring(0, 4);
                // 身份证上的月份
                String yue = idcard.substring(10).substring(0, 2);
                // 当前年份
             // 当前年份
                int fyear = cal.get(Calendar.YEAR);
                // 当前月份
                int fyue = cal.get(Calendar.MONTH) + 1;
                // 当前月份大于用户出身的月份表示已过生日
                if (Integer.parseInt(yue) <= fyue) {
                    age = fyear - Integer.parseInt(year) + 1;
                    // 当前用户还没过生日
                } else {
                    age = fyear - Integer.parseInt(year);
                }
            }
        return age;
    }

二 获取出生年月

首先要在实体类中定义出生年月(birthday)和身份证号码(idcard)

//出生年月
private String birthday;
	public void setBirthday(String idcard) {
		this.birthday = getBirthdayByIdcard(idcard);
	}
	public String getBirthday() {
		return getBirthdayByIdcard(idcard);
	}
//身份证号码
private String idcard;
		public String getIdcard() {
		return idcard;
	}

		public void setIdcard(String idcard) {
		this.idcard = idcard;
	}

通过身份证号码获取出生年月

 /**
     * 获取出生日期  yyyy/MM/dd
     * @param idcard
     * @return
     */
    public static String getBirthdayByIdcard(String idcard){
        String birthday="";
        String year="";
        String month="";
        String day="";
            //15位身份证号
            if (idcard.length() == 15){
                // 身份证上的年份(15位身份证为1980年前的)
               year = "19" + idcard.substring(6, 8);
               //身份证上的月份
               month = idcard.substring(8, 10);
                //身份证上的日期
               day= idcard.substring(10, 12);
                //18位身份证号
            }else if(idcard.length() == 18){
                // 身份证上的年份
                year = idcard.substring(6).substring(0, 4);
                // 身份证上的月份
                month = idcard.substring(10).substring(0, 2);
                //身份证上的日期
                day=idcard.substring(12).substring(0,2);
            }
            birthday=year+"/"+month+"/"+day;
        return birthday;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值