Class CIN

java.lang.Object
org.miaixz.bus.core.data.CIN

public class CIN extends Object
公民身份号码(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

    Fields
    Modifier and Type
    Field
    Description
    static final int
    中国公民身份证号码最大长度。
    static final int
    中国公民身份证号码最小长度。
  • Constructor Summary

    Constructors
    Constructor
    Description
    CIN(String code)
    构造
  • Method Summary

    Modifier and Type
    Method
    Description
    static String
    将15位身份证号码转换为18位 15位身份证号码遵循GB 11643-1989标准。
    static String
    将18位身份证号码转换为15位
    int
    根据身份编号获取年龄
    int
    getAge(Date dateToCompare)
    根据身份编号获取指定日期当时的年龄年龄(周岁) 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。 1999-02-28出生,则相对2000-02-29,周岁为1
    根据身份编号获取生日
    从身份证号码中获取生日日期
    根据身份编号获取生日天
    根据身份编号获取生日月
    根据身份编号获取生日年
    根据身份编号获取地市级编码 获取编码为4位
    根据身份编号获取区县级编码 获取编码为6位
    int
    根据身份编号获取性别
    根据身份编号获取户籍省份
    根据身份编号获取户籍省份编码
    static CIN
    of(String code)
    创建CIN
    static boolean
    verify(String idCard, boolean ignoreCase)
    判断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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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

      public CIN(String code)
      构造
      Parameters:
      code - 身份证号码
  • Method Details

    • of

      public static CIN of(String code)
      创建CIN
      Parameters:
      code - 身份证号码
      Returns:
      CIN
    • convert15To18

      public static String convert15To18(String idCard)
      将15位身份证号码转换为18位 15位身份证号码遵循GB 11643-1989标准。
      Parameters:
      idCard - 15位身份编码
      Returns:
      18位身份编码
    • convert18To15

      public static String convert18To15(String idCard)
      将18位身份证号码转换为15位
      Parameters:
      idCard - 18位身份编码
      Returns:
      15位身份编码
    • verify

      public static boolean verify(String idCard, boolean ignoreCase)
      判断18位身份证的合法性,第十八位数字(校验码)的计算方法为:
      1. 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
      2. 将这17位数字和系数相乘的结果相加
      3. 用加出来和除以11,看余数是多少
      4. 余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2
      5. 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2
      Parameters:
      idCard - 待验证的身份证
      ignoreCase - 是否忽略大小写。true则忽略X大小写,否则严格匹配大写。
      Returns:
      是否有效的18位身份证
    • getProvinceCode

      public String getProvinceCode()
      根据身份编号获取户籍省份编码
      Returns:
      省份编码
    • getProvince

      public String getProvince()
      根据身份编号获取户籍省份
      Returns:
      省份名称。
    • getCityCode

      public String getCityCode()
      根据身份编号获取地市级编码 获取编码为4位
      Returns:
      地市级编码
    • getDistrictCode

      public String getDistrictCode()
      根据身份编号获取区县级编码 获取编码为6位
      Returns:
      地市级编码
    • getBirth

      public String getBirth()
      根据身份编号获取生日
      Returns:
      生日(yyyyMMdd)
    • getBirthDate

      public DateTime getBirthDate()
      从身份证号码中获取生日日期
      Returns:
      日期
    • getAge

      public int getAge()
      根据身份编号获取年龄
      Returns:
      年龄
    • getAge

      public int getAge(Date dateToCompare)
      根据身份编号获取指定日期当时的年龄年龄(周岁) 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。
      • 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。
      • 1999-02-28出生,则相对2000-02-29,周岁为1
      Parameters:
      dateToCompare - 以此日期为界,计算年龄。
      Returns:
      年龄
    • getBirthYear

      public Short getBirthYear()
      根据身份编号获取生日年
      Returns:
      生日(yyyy)
    • getBirthMonth

      public Short getBirthMonth()
      根据身份编号获取生日月
      Returns:
      生日(MM)
    • getBirthDay

      public Short getBirthDay()
      根据身份编号获取生日天
      Returns:
      生日(dd)
    • getGender

      public int getGender()
      根据身份编号获取性别
      Returns:
      性别(1 : 男 , 0 : 女)