public class CitizenIdKit extends Object
| Modifier and Type | Class and Description |
|---|---|
class |
CitizenIdKit.CitizenInfo |
| Constructor and Description |
|---|
CitizenIdKit() |
| Modifier and Type | Method and Description |
|---|---|
static int |
getAgeByIdCard(String idcard)
根据身份编号获取年龄,只支持15或18位身份证号码
|
static int |
getAgeByIdCard(String idcard,
Date dateToCompare)
根据身份编号获取指定日期当时的年龄,只支持15或18位身份证号码
|
static String |
getBirthByIdCard(String idcard)
根据身份编号获取生日,只支持15或18位身份证号码
|
CitizenIdKit.CitizenInfo |
getCitizenInfo(String idcard)
获取公民身份相关信息
|
static Short |
getDayByIdCard(String idcard)
根据身份编号获取生日天,只支持15或18位身份证号码
|
static int |
getGenderByIdCard(String idcard)
根据身份编号获取性别,只支持15或18位身份证号码
|
static String |
getIdCardTo18(String idcard)
将15位身份证号码转换为18位
|
static Short |
getMonthByIdCard(String idcard)
根据身份编号获取生日月,只支持15或18位身份证号码
|
static String |
getProvinceByIdCard(String idcard)
根据身份编号获取户籍省份,只支持15或18位身份证号码
|
static Short |
getYearByIdCard(String idcard)
根据身份编号获取生日年,只支持15或18位身份证号码
|
static String |
hide(String idcard,
int startInclude,
int endExclude)
隐藏指定位置的几个身份证号数字为“*”
|
static boolean |
isValidCard(String idcard)
是否有效身份证号,忽略X的大小写
如果身份证号码中含有空格始终返回
false |
static String[] |
isValidCard10(String idcard)
验证10位身份编码是否合法
|
static boolean |
isValidCard15(String idcard)
验证15位身份编码是否合法
|
static boolean |
isValidCard18(String idcard)
判断18位身份证的合法性
根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成
排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码
顺序码: 表示在同一地址码所标识的区域范围内,对同年、同月、同 日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配 给女性
第1、2位数字表示:所在省份的代码
第3、4位数字表示:所在城市的代码
第5、6位数字表示:所在区县的代码
第7~14位数字表示:出生年、月、日
第15、16位数字表示:所在地的派出所的代码
第17位数字表示性别:奇数表示男性,偶数表示女性
第18位数字是校检码,用来检验身份证的正确性 校检码可以是0~9的数字,有时也用x表示
第十八位数字(校验码)的计算方法为:
将前面的身份证号码17位数分别乘以不同的系数 从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
将这17位数字和系数相乘的结果相加
用加出来和除以11,看余数是多少
余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字 其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2
通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ 如果余数是10,身份证的最后一位号码就是2
香港人在大陆的身份证,【810000】开头;同样可以直接获取到 性别、出生日期
81000019980902013X: 文绎循 男 1998-09-02
810000201011210153: 辛烨 男 2010-11-21
澳门人在大陆的身份证,【820000】开头;同样可以直接获取到 性别、出生日期
820000200009100032: 黄敬杰 男 2000-09-10
台湾人在大陆的身份证,【830000】开头;同样可以直接获取到 性别、出生日期
830000200209060065: 王宜妃 女 2002-09-06
830000194609150010: 苏建文 男 1946-09-14
83000019810715006X: 刁婉琇 女 1981-07-15
|
static boolean |
isValidCard18(String idcard,
boolean ignoreCase)
判断18位身份证的合法性
|
static boolean |
isValidHKCard(String idcard)
验证香港身份证号码(存在Bug,部份特殊身份证无法检查)
|
static boolean |
isValidTWCard(String idcard)
验证台湾身份证号码
|
public static boolean isValidCard(String idcard)
falseidcard - 身份证号,支持18位、15位和港澳台的10位public static boolean isValidCard18(String idcard)
idcard - 待验证的身份证public static boolean isValidCard18(String idcard, boolean ignoreCase)
判断18位身份证的合法性
根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。顺序码: 表示在同一地址码所标识的区域范围内,对同年、同月、同 日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配 给女性。
第十八位数字(校验码)的计算方法为:
idcard - 待验证的身份证ignoreCase - 是否忽略大小写public static boolean isValidCard15(String idcard)
idcard - 身份编码public static String[] isValidCard10(String idcard)
idcard - 身份编码[0] - 台湾、澳门、香港 [1] - 性别(男M,女F,未知N) [2] - 是否合法(合法true,不合法false) 若不是身份证件号码则返回null
public static boolean isValidTWCard(String idcard)
idcard - 身份证号码public static boolean isValidHKCard(String idcard)
身份证前2位为英文字符,如果只出现一个英文字符则表示第一位是空格,对应数字58 前2位英文字符A-Z分别对应数字10-35 最后一位校验码为0-9的数字加上字符"A","A"代表10
将身份证号码全部转换为数字,分别对应乘9-1相加的总和,整除11则证件号码有效
idcard - 身份证号码public static String getBirthByIdCard(String idcard)
idcard - 身份编号public static int getAgeByIdCard(String idcard)
idcard - 身份编号public static int getAgeByIdCard(String idcard, Date dateToCompare)
idcard - 身份编号dateToCompare - 以此日期为界,计算年龄public static Short getYearByIdCard(String idcard)
idcard - 身份编号public static Short getMonthByIdCard(String idcard)
idcard - 身份编号public static Short getDayByIdCard(String idcard)
idcard - 身份编号public static int getGenderByIdCard(String idcard)
idcard - 身份编号public static String getProvinceByIdCard(String idcard)
idcard - 身份证号public static String hide(String idcard, int startInclude, int endExclude)
idcard - 身份证号startInclude - 开始位置(包含)endExclude - 结束位置(不包含)CharsKit.hide(CharSequence, int, int)public static String getIdCardTo18(String idcard)
idcard - 15位身份编码public CitizenIdKit.CitizenInfo getCitizenInfo(String idcard)
idcard - 身份号码Copyright © 2022. All rights reserved.