根据身份证获取信息的方法,基本都在这里了

package com.hzrc.acl.authentication.security.util;

import java.util.Calendar;

/**
 * 根据身份证号获取相关信息
 */
public class getInfoByIdentityCodeUtil {

    /**
     * 校验身份证的正确性
     * @param identityCard
     * @return
     */
    private static boolean getValidIdentityCard(String identityCard){

        if(identityCard == null || identityCard.length() == 0) return false;

        if(identityCard.length() != 18) return false;

        char[] identities = identityCard.toCharArray();
        int code = 0;
        int[] number = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
        char[] numberArray = new char[]{'1','0','X','9','8','7','6','5','4','3','2'};
        for(int i =0 ; i < 17; i++)
        {
            if(identities[i] < '0' || identities[i] > '9')
            {
                return false;
            }
            code += (identities[i] -'0') * number[i];
        }
        code = code % 11;

        if(numberArray[code] != identities[17])
        {
            return false;
        }
        return true;
    }


    /**
     * 根据身份证号获取性别
     * @param identityCode
     * @return 0位置 1男生 2女生
     */
    public static Integer getGender(String identityCode) {

        if(identityCode == null || identityCode.length() == 0) return 0;

        int gender = 0;
        if(identityCode.length() == 18){

            //如果身份证号18位,取身份证号倒数第二位
            char c = identityCode.charAt(identityCode.length() - 2);
            gender = Integer.parseInt(String.valueOf(c));

        }else{

            //如果身份证号15位,取身份证号最后一位
            char c = identityCode.charAt(identityCode.length() - 1);
            gender = Integer.parseInt(String.valueOf(c));

        }

        if(gender % 2 == 1)   return 1;

        return 2;

    }


    /**
     * 根据身份证号获取出生年月
     * @param identityCode
     * @return
     */
    public static String getBirthday(String identityCode) {

        String birthday = null;

        if(identityCode == null || identityCode.length() == 0) return birthday;

        if (identityCode.length() == 15) {
            birthday = "19" + identityCode.substring(6, 8) + "-" + identityCode.substring(8, 10) + "-"
                    + identityCode.substring(10, 12);
        } else if (identityCode.length() == 18) {
            birthday = identityCode.substring(6, 10) + "-" + identityCode.substring(10, 12) + "-"
                    + identityCode.substring(12, 14);
        }

        return birthday;

    }

    /**
     * 根据身份证号获取年龄
     * @param identityCode
     * @return
     */
    public static Integer getAge(String identityCode) {

        int age = 0;

        if(identityCode == null || identityCode.length() == 0) return age;

        int year = Calendar.getInstance().get(Calendar.YEAR);

        if (identityCode.length() == 15) {
            age = (year - Integer.parseInt("19" + identityCode.substring(6, 8)));
        } else if (identityCode.length() == 18) {

            age = (year - Integer.parseInt(identityCode.substring(6, 10)));
        }

        return age;
    }


    /**
     * 根据身份证号获取籍贯
     * @param identityCode
     * @return
     */
    public static String getNaticePlace(String identityCode) {

        if(identityCode == null || identityCode.length() == 0) return null;

        int nativePlaceCode=Integer.parseInt(identityCode.substring(0, 6));

        return NativePlace.getNativePlace(nativePlaceCode);

    }


    public static void main(String[] args) {
        

    }





}



获取籍贯,因为所有地区信息太多了,就不放在这里了,需要的可以评论,私发给你。



知是行之始,行是知之成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值