Java 如何提取身份证中的生日

👆🏻👆🏻👆🏻关注博主,让你的代码变得更加优雅。

前言

Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的"。

官网:https://www.hutool.cn/

推荐说明

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

最佳实践

引入pom

xml 复制代码
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <!-- 请查看最新版本 https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
    <version>5.8.26</version>
</dependency>

介绍

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

工具中主要的方法包括:

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

使用

java 复制代码
String ID_18 = "321083197812162119";
String ID_15 = "150102880730303";

//是否有效
boolean valid = IdcardUtil.isValidCard(ID_18);
boolean valid15 = IdcardUtil.isValidCard(ID_15);

//转换
String convert15To18 = IdcardUtil.convert15To18(ID_15);
Assert.assertEquals(convert15To18, "150102198807303035");

//年龄
DateTime date = DateUtil.parse("2017-04-10");
        
int age = IdcardUtil.getAgeByIdCard(ID_18, date);
Assert.assertEquals(age, 38);

int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
Assert.assertEquals(age2, 28);

//生日
String birth = IdcardUtil.getBirthByIdCard(ID_18);
Assert.assertEquals(birth, "19781216");

String birth2 = IdcardUtil.getBirthByIdCard(ID_15);
Assert.assertEquals(birth2, "19880730");

//省份
String province = IdcardUtil.getProvinceByIdCard(ID_18);
Assert.assertEquals(province, "江苏");

String province2 = IdcardUtil.getProvinceByIdCard(ID_15);
Assert.assertEquals(province2, "内蒙古");

写在最后

给大家推荐一个非常完整的Java项目搭建的最佳实践,也是本文的源码出处,由大厂程序员&EasyExcel作者维护。

github地址:https://github.com/zhuangjiaju/easytools

gitee地址:https://gitee.com/zhuangjiaju/easytools

相关推荐
计算机学姐2 分钟前
基于PHP的电脑线上销售系统
开发语言·vscode·后端·mysql·编辑器·php·phpstorm
吉小雨9 分钟前
PyTorch经典模型
人工智能·pytorch·python
一叶飘零_sweeeet19 分钟前
深入理解 MySQL MVCC:多版本并发控制的核心机制
数据库·mysql
阿乾之铭20 分钟前
spring MVC 拦截器
java·spring·mvc
可愛小吉20 分钟前
Python 课程10-单元测试
开发语言·python·单元测试·tdd·unittest
码爸22 分钟前
flink 批量写clickhouse
java·clickhouse·flink
djgxfc25 分钟前
简单了解Maven与安装
java·maven
student.J27 分钟前
傅里叶变换
python·算法·傅里叶
中文很快乐28 分钟前
springboot结合p6spy进行SQL监控
java·数据库·sql
丶白泽29 分钟前
重修设计模式-概览
java·设计模式