身份证工具-IdcardUtil

由来

在日常开发中,我们对身份证的验证主要是正则方式(位数,数字范围等),但是中国身份证,尤其18位身份证每一位都有严格规定,并且最后一位为校验位。而我们在实际应用中,针对身份证的验证理应严格至此。于是IdcardUtil应运而生。

IdcardUtil从3.0.4版本起加入Hutool工具家族,请升级至此版本以上可使用。

介绍

IdcardUtil现在支持大陆15位、18位身份证,港澳台10位身份证。

工具中主要的方法包括:

  1. isValidCard 验证身份证是否合法
  2. convert15To18 身份证15位转18位
  3. getBirthByIdCard 获取生日
  4. getAgeByIdCard 获取年龄
  5. getYearByIdCard 获取生日年
  6. getMonthByIdCard 获取生日月
  7. getDayByIdCard 获取生日天
  8. getGenderByIdCard 获取性别
  9. getProvinceByIdCard 获取省份

使用

  1. String ID_18 = "321083197812162119";
  2. String ID_15 = "150102880730303";
  3. //是否有效
  4. boolean valid = IdcardUtil.isValidCard(ID_18);
  5. boolean valid15 = IdcardUtil.isValidCard(ID_15);
  6. //转换
  7. String convert15To18 = IdcardUtil.convert15To18(ID_15);
  8. Assert.assertEquals(convert15To18, "150102198807303035");
  9. //年龄
  10. DateTime date = DateUtil.parse("2017-04-10");
  11. int age = IdcardUtil.getAgeByIdCard(ID_18, date);
  12. Assert.assertEquals(age, 38);
  13. int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
  14. Assert.assertEquals(age2, 28);
  15. //生日
  16. String birth = IdcardUtil.getBirthByIdCard(ID_18);
  17. Assert.assertEquals(birth, "19781216");
  18. String birth2 = IdcardUtil.getBirthByIdCard(ID_15);
  19. Assert.assertEquals(birth2, "19880730");
  20. //省份
  21. String province = IdcardUtil.getProvinceByIdCard(ID_18);
  22. Assert.assertEquals(province, "江苏");
  23. String province2 = IdcardUtil.getProvinceByIdCard(ID_15);
  24. Assert.assertEquals(province2, "内蒙古");

声明 以上两个身份证号码为随机编造的,如有雷同,纯属巧合。