转java通过身份证号码获取出生日期、性别、年龄
转自:https://blog.csdn.net/u011199063/article/details/79564587
身份证号码:
15位:6位地址码+6位出生年月日(900101代表1990年1月1日出生)+3位顺序码
18位:6位地址码+8位出生年月日(19900101代表1990年1月1日出生)+3位顺序码+1位校验码
- 1
- 2
- 3
地区码:
1、 第一、二位表示省(自治区、直辖市、特别行政区)。
2、 第三、四位表示市(地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码)。其中,01-20,51-70表示省直辖市;21-50表示地区(自治州、盟)。
3、 第五、六位表示县(市辖区、县级市、旗)。01-18表示市辖区或地区(自治州、盟)辖县级市;21-80表示县(旗);81-99表示省直辖县级市。
- 1
- 2
- 3
- 4
顺序码:
顺序码奇数分给男性,偶数分给女性。
- 1
- 2
校验码:
作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且中国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。
- 1
- 2
代码:
/**
* 通过身份证号码获取出生日期、性别、年龄
* @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通过身份证号码获取出生日期、性别、年龄
身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1月1日出生)+3位顺序码 18位:6位地址码+8位出生年月日(19900101代表1990年1月1日出生)+3位顺序码+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 ...
- java根据身份证号码得到生日和性别
java根据身份证号码得到生日和性别 IDCards工具类 执行结果 IDCards工具类 package com.liantuo.finance.utils;//身份证工具类 public clas ...
- JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别
目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...
最新文章
- usaco Shaping Regions
- linux内核支持硬盘,Intel 10nm桌面版还是来了:Linux内核已支持
- vue移动端优秀框架收集
- 最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具
- 59. 螺旋矩阵 ||
- leetcode—17.递归题目python解答
- android mysql客户端_一款基于Android手机的MySQL客户端的设计与实现
- 科来网络分析系统网络故障分析方法
- java 读取Excel(.xls格式)
- 6个VMware桌面虚拟化的替代方案
- 计算上周一开始时间戳
- 年审是当月还是当天_车辆年检可以在到期当月进行吗
- c语言单链表的按序号查找,以下为单链表按序号查找的运算,分析算法,请在______处填上正确的语句。 pointer find_lklist(1kl...
- 基于opencv+python的角度测量
- 计算机组成原理六单元答案,计算机组成原理第六章中央处理器(含答案)
- 实用成都培训机构设计装修案例图解析
- HSDPA,HSUPA,HSPA+ 三种技术之间的区别
- .设计一个敏感词过滤程序
- 计算机英语情景对话二人组,英语小对话二人组日常情景对话(2)
- 【计算机程序设计思想与方法】2 什么是计算思维?