身份证号码:

15位:6位地址码+6位出生年月日(900101代表1990年1月1日出生)+3位顺序码
18位:6位地址码+8位出生年月日(19900101代表1990年1月1日出生)+3位顺序码+1位校验码

地区码:

1、 第一、二位表示省(自治区、直辖市、特别行政区)。
2、 第三、四位表示市(地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码)。其中,01-20,51-70表示省直辖市;21-50表示地区(自治州、盟)。
3、 第五、六位表示县(市辖区、县级市、旗)。01-18表示市辖区或地区(自治州、盟)辖县级市;21-80表示县(旗);81-99表示省直辖县级市。

顺序码:

顺序码奇数分给男性,偶数分给女性。

校验码:

作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且中国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

代码:

/*** 通过身份证号码获取出生日期、性别、年龄* @param certificateNo* @return 返回的出生日期格式:1990-01-01   性别格式:F-女,M-男*/
public static Map<String, String> getBirAgeSex(String certificateNo) {String birthday = "";String age = "";String sexCode = "";int year = Calendar.getInstance().get(Calendar.YEAR);char[] number = certificateNo.toCharArray();boolean flag = true;if (number.length == 15) {for (int x = 0; x < number.length; x++) {if (!flag) {return new HashMap<String, String>();}flag = Character.isDigit(number[x]);}} else if (number.length == 18) {for (int x = 0; x < number.length - 1; x++) {if (!flag) {return new HashMap<String, String>();}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, certificateNo.length())) % 2 == 0 ? "F" : "M";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 ? "F" : "M";age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";}Map<String, String> map = new HashMap<String, String>();map.put("birthday", birthday);map.put("age", age);map.put("sexCode", sexCode);return map;
}

java通过身份证号码获取出生日期、性别、年龄相关推荐

  1. 转java通过身份证号码获取出生日期、性别、年龄

    转自:https://blog.csdn.net/u011199063/article/details/79564587 身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1 ...

  2. JAVA通过身份证号码获取出生年月、年龄及性别

    package com.acat.util;import org.apache.commons.lang.StringUtils;import java.text.ParseException; im ...

  3. 通过身份证号码获取出生日期、性别、年龄

    /*** 通过身份证号码获取出生日期.性别.年龄** @param certificateNo* @return 返回的出生日期格式:1990-01-01 性别格式:F-女,M-男*/public s ...

  4. C# 根据身份证号码获取人员性别和出生年月

    C# 根据身份证号码获取人员性别和出生年月 //处理18位的身份证号码从号码中得到生日和性别代码if (identityCard.Length == 18){birthday = identityCa ...

  5. HTML身份证号校验及根据身份证号获取出生日期/性别

    一.HTML的方法都写在js里 若HTML.JS.CSS在一个HTML文件中,在HTML中使用HTML需要借助<scirpt>标签,使用<script>标签的方式有两种: 一种 ...

  6. Python 从身份证中提取出生日期/性别/年龄/生肖/星座/省份/城市/城市等级/区县(2019划分标准)

    写在前面 用python实现快速从身份证中explore尽量多的的信息,找了很多资料,发现并不全.参考已有的分享和其他信息自己写了. 能提取的信息: 出生日期.年龄.生肖.星座.省份.城市.区县.归属 ...

  7. jquery根据身份证号码计算出生日期、年龄、性别代码

    if(UUserCard != null && UUserCard != ''){ //获取出生日期 //var birthday = UUserCard.substring(6, 1 ...

  8. JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别

    目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...

  9. 根据身份证号获取地址、年龄、星座、生肖、生日、性别等基本信息

    居民身份证,是用于证明持有人身份的一种法定证件,多由各国或地区政府发行予公民.并作为每个人重要的身份证明文件. 只需要一条身份证号信息就可以获取到出生地址.年龄.星座.生肖.生日.性别等基本信息,在用 ...

最新文章

  1. 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)
  2. ASP.NET Web页面(.aspx)添加用户控件(.ascx)无显示的问题
  3. 访问者模式讨论篇:java的动态绑定与双分派
  4. 永洪Desktop全能力永久免费 国产数据分析工具迈向新阶段
  5. 运维编排场景系列----给实例加到SLS机器组
  6. 为长篇文档快速创建目录
  7. python内建函数(不完全)
  8. 计算机操作系统(第四版)课后习题答案(完整版)---汤小丹 梁红兵 哲凤屏 汤子瀛 版本
  9. teamview centos 配置
  10. 【数据库系统】C#窗体应用显示用户sa登录失败
  11. 一个不用背单词的高效英文学习法
  12. H.264/AVC是什么?
  13. [31期]上班这点事
  14. 【操作系统】实验六 系统内存使用统计
  15. 01:行业介绍、虚拟化技术、Win系统安装
  16. 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)DEGHI
  17. php写字本写,php在图片上写字的类
  18. 磁盘损坏无法修复怎么办
  19. 审批流程设计方案学习
  20. (2)组合数学-拉丁方

热门文章

  1. vue中如何在搜索框中实现关键字搜索
  2. 武汉大学研究生慕课《学术道德与学术规范》
  3. mac 升级java_mac版java更新升级方法
  4. Linux 安装 rar 解压
  5. Vuetify学习笔记(一)gird栅格系统
  6. 68个dlib的landmarks
  7. 【Joy of Cryptography 读书笔记】Chapter 5 伪随机数生成器(Pseudorandom Generator)
  8. PMP-项目采购管理
  9. 身份证复印件正确签注写法 -- 很重要!
  10. K2P刷机教程转自恩山磨人的小妖精