通过身份证号码获取年龄、生日、性别等方法,网上多不胜数,都可以使用,如果自己写或搜资料需要注意的是身份证有15位与18位。下面我也推荐下我自己长期使用的一套。直接上代码了:

import lombok.Data;
import org.apache.commons.lang3.StringUtils;import java.time.LocalDate;
import java.util.Calendar;
import java.util.Objects;public class IdCardUtil {/*** 通过身份证号码获取出生日期、性别、年龄** @param certificateNo 身份证号码*/public static IdCardInfo getBirAgeSex(String certificateNo) {IdCardInfo idCardInfo = new IdCardInfo();String birthday = null;Integer age = null;Integer sexCode = null;int year = LocalDate.now().getYear();char[] number = certificateNo.toCharArray();boolean flag = true;if (number.length == 15) {for (char c : number) {if (!flag)return idCardInfo;flag = Character.isDigit(c);}} else if (number.length == 18) {for (int x = 0; x < number.length - 1; x++) {if (!flag)return idCardInfo;flag = Character.isDigit(number[x]);}}if (flag && certificateNo.length() == 15) {birthday = "19" + certificateNo.substring(6, 8) + "-" + certificateNo.substring(8, 10) + "-"+ certificateNo.substring(10, 12);sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, 15))% 2 == 0 ? 0 : 1;age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8)));} else if (flag && certificateNo.length() == 18) {birthday = certificateNo.substring(6, 10) + "-" + certificateNo.substring(10, 12) + "-"+ certificateNo.substring(12, 14);sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1))% 2 == 0 ? 0 : 1;age = (year - Integer.parseInt(certificateNo.substring(6, 10)));}idCardInfo.setAge(age);idCardInfo.setSex(Objects.isNull(sexCode) ? null : SexEnum.valueOfCode(sexCode));idCardInfo.setBirthday(StringUtils.isBlank(birthday) ? null : LocalDate.parse(birthday));return idCardInfo;}@Datapublic static class IdCardInfo {/*** 年龄*/private Integer age;/*** 联系人性别 0- 女, 1 -男*/private SexEnum sex;/*** 生日*/private LocalDate birthday;}
}

import lombok.AllArgsConstructor;
import lombok.Getter;import java.util.Objects;@Getter
@AllArgsConstructor
public enum SexEnum {/*** 性别*/WOMAN(0, "女"),MAN(1, "男"),OTHER(2, "其它");private Integer code;private String msg;public static SexEnum valueOfCode(Integer code) {for (SexEnum sexEnum : values()) {if (Objects.equals(code, sexEnum.code)) {return sexEnum;}}return null;}}

JAVA如何通过身份证号码计算年龄、生日、性别相关推荐

  1. MySql通过身份证号码计算年龄和性别

    一.如何通过身份证号码计算当前用户的年龄 计算规则:先取出身份证上的年份并计算年份与当前年份的差,再比较当前日期与身份证上的月日(即判断此人是否已经过了国历生日),决定是否需要减去一岁,已经过了生日的 ...

  2. JS根据身份证号码计算年龄和性别

    /*** 根据身份证号得到姓别和精确计算年龄*/ function analyzeIDCard(IDCard){var sexAndAge = {};//获取用户身份证号码var userCard = ...

  3. Js--根据身份证号计算年龄、性别、出生年月日

    根据身份证号获取生日 export function getBirthdayByIdCard(idCard: string): string {if (idCard.length === 15) {r ...

  4. Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别

    15位身份证号码各位的含义: 地址码(前六位数):表示身份证编码对象常住户口所在省份.地市,以及县(市.旗.区)的行政区划代码,1-2位数字表示所在地省.自治区.直辖市代码,第3.4位数字表示所在地地 ...

  5. 根据身份证号计算年龄、性别

    import java.text.SimpleDateFormat; import java.util.Date; //身份证处理 public class IDUtils { /** * 根据身份证 ...

  6. python 根据身份证号计算年龄和性别_excel如何根据身份证号计算男女出生日期、性别和年龄?分享了!...

    工作中,有时需要从身份证号中提取性别.出生日期.年龄等.如果手工统计,不仅容易出错,还耗时耗力.春暖花开的时候,有那时间不如出去踏青散步,赏花游玩. 下面小编为大家分享一种方法,使用Excel函数轻松 ...

  7. 通过身份证号得到年龄、性别和出生日期

    注:目前只针对18位身份证号码. 不多说了,直接上代码,调用IdCard(UUserCard,num)方法即可,其中UUserCard为身份 //通过身份证号计算年龄.性别.出生日期 function ...

  8. js前端通过身份证号判断年龄、性别、出生日期。

    方法有两个参数,第一个形参传身份证号,第二个形参传num. num=1 代表返回出生日期. num=2代表返回性别. num=3代表返回年龄. //通过身份证号计算年龄.性别.出生日期 functio ...

  9. 前端原生javaScript,通过身份证号判断年龄、性别、出生日期。

    方法有两个参数,第一个形参传身份证号,第二个形参传num. num=1 代表返回出生日期. num=2代表返回性别. num=3代表返回年龄. //通过身份证号计算年龄.性别.出生日期 functio ...

  10. mysql实现根据身份证号码计算出身日期和年龄

    提出 在我们国家身份证号码从第七位开始到第十四为表示的是你的出生日期:所以给定一个身份证号码我们就可以根据身份证号码计算出相应的出生日期和年龄 解决 计算出生日期 SELECT DATE_FORMAT ...

最新文章

  1. 【从零学习OpenCV 4】Mat类介绍
  2. 键盘 Input子系统
  3. perl的安装和版本切换工具-perlbrew
  4. linux操作系统之条件变量
  5. 缓存和数据库一致性问题,看这篇就够了
  6. mysql 5.7自定义安装路径_Mysql5.7.18版本(二进制包安装)自定义安装路径教程详解...
  7. 格力手机没有放弃!将跟上5G和柔性屏的大势
  8. OpenShift Security (11) - 用RHACS在DevOps的CICD中扫描部署中的安全风险
  9. java long类型赋值_Java语言编程第22讲——如何理解“Java是强类型语言”
  10. Eclipse调试Java的10个技巧
  11. OC与Swift混编
  12. ML/DL-复习笔记【八】- 信息熵与相对熵(KL散度)
  13. shopify的前端开发教程
  14. 木瓜蛋白酶改性金纳米粒修饰淀粉/二氧化硅复合微球/硒化镉/聚苯乙烯荧光二氧化硅微球的研究
  15. 36D杯CTF Re WP
  16. input取消焦点 vue_vue获取input焦点,弹框后自动获取input焦点
  17. python三大框架_python 三大框架的 介绍。
  18. c语言程序主要的结构特点是什么,1. C语言的结构特点?
  19. 什么是固态硬盘及其优缺点【转】
  20. [学习笔记]数据与科学训练营之五:机器学习

热门文章

  1. 最好的余生:有家回,有人等,有饭吃
  2. python基本代码教程-如何真正零基础入门Python?(第一节)
  3. xdg在Linux中的用法,linux-如何使用sudo获取XDG变量?
  4. This computer does not support Intel Virtualization Technology (VT-x) or it is being exclusively use
  5. Java多线程系列--【JUC集合02】- CopyOnWriteArrayList
  6. Java多线程系列--【JUC集合07】- ArrayBlockingQueue
  7. mtk系统如何制作差分包且正确签名?
  8. nios ii小实验——SDRAM读写
  9. 索尼a7c语言没有英语,索尼A7C的三大优点和缺点,看完再决定要不要买
  10. RL Python练习