java通过身份证号码获取出生日期、性别、年龄
身份证号码:
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通过身份证号码获取出生日期、性别、年龄相关推荐
- 转java通过身份证号码获取出生日期、性别、年龄
转自:https://blog.csdn.net/u011199063/article/details/79564587 身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1 ...
- JAVA通过身份证号码获取出生年月、年龄及性别
package com.acat.util;import org.apache.commons.lang.StringUtils;import java.text.ParseException; im ...
- 通过身份证号码获取出生日期、性别、年龄
/*** 通过身份证号码获取出生日期.性别.年龄** @param certificateNo* @return 返回的出生日期格式:1990-01-01 性别格式:F-女,M-男*/public s ...
- C# 根据身份证号码获取人员性别和出生年月
C# 根据身份证号码获取人员性别和出生年月 //处理18位的身份证号码从号码中得到生日和性别代码if (identityCard.Length == 18){birthday = identityCa ...
- HTML身份证号校验及根据身份证号获取出生日期/性别
一.HTML的方法都写在js里 若HTML.JS.CSS在一个HTML文件中,在HTML中使用HTML需要借助<scirpt>标签,使用<script>标签的方式有两种: 一种 ...
- Python 从身份证中提取出生日期/性别/年龄/生肖/星座/省份/城市/城市等级/区县(2019划分标准)
写在前面 用python实现快速从身份证中explore尽量多的的信息,找了很多资料,发现并不全.参考已有的分享和其他信息自己写了. 能提取的信息: 出生日期.年龄.生肖.星座.省份.城市.区县.归属 ...
- jquery根据身份证号码计算出生日期、年龄、性别代码
if(UUserCard != null && UUserCard != ''){ //获取出生日期 //var birthday = UUserCard.substring(6, 1 ...
- JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别
目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...
- 根据身份证号获取地址、年龄、星座、生肖、生日、性别等基本信息
居民身份证,是用于证明持有人身份的一种法定证件,多由各国或地区政府发行予公民.并作为每个人重要的身份证明文件. 只需要一条身份证号信息就可以获取到出生地址.年龄.星座.生肖.生日.性别等基本信息,在用 ...
最新文章
- 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)
- ASP.NET Web页面(.aspx)添加用户控件(.ascx)无显示的问题
- 访问者模式讨论篇:java的动态绑定与双分派
- 永洪Desktop全能力永久免费 国产数据分析工具迈向新阶段
- 运维编排场景系列----给实例加到SLS机器组
- 为长篇文档快速创建目录
- python内建函数(不完全)
- 计算机操作系统(第四版)课后习题答案(完整版)---汤小丹 梁红兵 哲凤屏 汤子瀛 版本
- teamview centos 配置
- 【数据库系统】C#窗体应用显示用户sa登录失败
- 一个不用背单词的高效英文学习法
- H.264/AVC是什么?
- [31期]上班这点事
- 【操作系统】实验六 系统内存使用统计
- 01:行业介绍、虚拟化技术、Win系统安装
- 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)DEGHI
- php写字本写,php在图片上写字的类
- 磁盘损坏无法修复怎么办
- 审批流程设计方案学习
- (2)组合数学-拉丁方