Package org.miaixz.bus.core.data
Class CIN
java.lang.Object
org.miaixz.bus.core.data.CIN
公民身份号码(Citizen Identification Number),参考GB11643-1999标准。
- 1-2位: 2位省份代码。
- 3-4位: 2位城市代码。
- 5-6位: 2位区县代码。
- 7-14位: 8位数字出生日期码。
- 15-17位:3位数字顺序码。第17位奇数表示男性,偶数表示女性
- 18位: 1位数字校验码。校检码可以是0~9的数字,有时也用X表示
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int中国公民身份证号码最大长度。static final int中国公民身份证号码最小长度。 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Stringconvert15To18(String idCard) 将15位身份证号码转换为18位 15位身份证号码遵循GB 11643-1989标准。static Stringconvert18To15(String idCard) 将18位身份证号码转换为15位intgetAge()根据身份编号获取年龄int根据身份编号获取指定日期当时的年龄年龄(周岁) 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。 1999-02-28出生,则相对2000-02-29,周岁为1getBirth()根据身份编号获取生日从身份证号码中获取生日日期根据身份编号获取生日天根据身份编号获取生日月根据身份编号获取生日年根据身份编号获取地市级编码 获取编码为4位根据身份编号获取区县级编码 获取编码为6位int根据身份编号获取性别根据身份编号获取户籍省份根据身份编号获取户籍省份编码static CIN创建CINstatic boolean判断18位身份证的合法性,第十八位数字(校验码)的计算方法为: 将前面的身份证号码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
-
Field Details
-
CHINA_ID_MIN_LENGTH
public static final int CHINA_ID_MIN_LENGTH中国公民身份证号码最小长度。- See Also:
-
CHINA_ID_MAX_LENGTH
public static final int CHINA_ID_MAX_LENGTH中国公民身份证号码最大长度。- See Also:
-
-
Constructor Details
-
CIN
构造- Parameters:
code- 身份证号码
-
-
Method Details
-
of
创建CIN- Parameters:
code- 身份证号码- Returns:
- CIN
-
convert15To18
将15位身份证号码转换为18位 15位身份证号码遵循GB 11643-1989标准。- Parameters:
idCard- 15位身份编码- Returns:
- 18位身份编码
-
convert18To15
将18位身份证号码转换为15位- Parameters:
idCard- 18位身份编码- Returns:
- 15位身份编码
-
verify
判断18位身份证的合法性,第十八位数字(校验码)的计算方法为:- 将前面的身份证号码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
- Parameters:
idCard- 待验证的身份证ignoreCase- 是否忽略大小写。true则忽略X大小写,否则严格匹配大写。- Returns:
- 是否有效的18位身份证
-
getProvinceCode
根据身份编号获取户籍省份编码- Returns:
- 省份编码
-
getProvince
根据身份编号获取户籍省份- Returns:
- 省份名称。
-
getCityCode
根据身份编号获取地市级编码 获取编码为4位- Returns:
- 地市级编码
-
getDistrictCode
根据身份编号获取区县级编码 获取编码为6位- Returns:
- 地市级编码
-
getBirth
根据身份编号获取生日- Returns:
- 生日(yyyyMMdd)
-
getBirthDate
从身份证号码中获取生日日期- Returns:
- 日期
-
getAge
public int getAge()根据身份编号获取年龄- Returns:
- 年龄
-
getAge
根据身份编号获取指定日期当时的年龄年龄(周岁) 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。- 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。
- 1999-02-28出生,则相对2000-02-29,周岁为1
- Parameters:
dateToCompare- 以此日期为界,计算年龄。- Returns:
- 年龄
-
getBirthYear
根据身份编号获取生日年- Returns:
- 生日(yyyy)
-
getBirthMonth
根据身份编号获取生日月- Returns:
- 生日(MM)
-
getBirthDay
根据身份编号获取生日天- Returns:
- 生日(dd)
-
getGender
public int getGender()根据身份编号获取性别- Returns:
- 性别(1 : 男 , 0 : 女)
-