/*** 通过身份证号码获取出生日期、性别、年龄** @param certificateNo* @return 返回的出生日期格式:1990-01-01   性别格式:F-女,M-男*/public static Map<String, String> getBirAgeSex(String certificateNo) {String birthday = "";String age = "";Integer sex = 0;//判断身份证号是否合法Boolean judgeId = judgeId(certificateNo);if (judgeId == false) {return new HashMap<String, String>();}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);sex = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length())) % 2 == 0 ? 2 : 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);sex = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? 2 : 1;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("sex", sex.toString());return map;}/*** 根据身份证号判断性别** @param idNumber* @return*/public static Integer judgeGender(String idNumber) throws IllegalArgumentException {System.out.println(idNumber.length());if (idNumber.length() != 18 && idNumber.length() != 15) {throw new IllegalArgumentException("身份证号长度错误");}int gender = 0;if (idNumber.length() == 18) {//如果身份证号18位,取身份证号倒数第二位char c = idNumber.charAt(idNumber.length() - 2);gender = Integer.parseInt(String.valueOf(c));} else {//如果身份证号15位,取身份证号最后一位char c = idNumber.charAt(idNumber.length() - 1);gender = Integer.parseInt(String.valueOf(c));}System.out.println("gender = " + gender);if (gender % 2 == 1) {return 1;} else {return 2;}}/*** 根据身份证号计算年龄** @param idCard* @return*/public static Integer countAge(String idCard) {//判断身份证号是否合法Boolean judgeId = judgeId(idCard);if (judgeId == false) {return 0;}//截取身份证中出行人出生日期中的年、月、日Integer personYear = Integer.parseInt(idCard.substring(6, 10));Integer personMonth = Integer.parseInt(idCard.substring(10, 12));Integer personDay = Integer.parseInt(idCard.substring(12, 14));Calendar cal = Calendar.getInstance();// 得到当前时间的年、月、日Integer yearNow = cal.get(Calendar.YEAR);Integer monthNow = cal.get(Calendar.MONTH) + 1;Integer dayNow = cal.get(Calendar.DATE);// 用当前年月日减去生日年月日Integer yearMinus = yearNow - personYear;Integer monthMinus = monthNow - personMonth;Integer dayMinus = dayNow - personDay;Integer age = yearMinus + 1; //先大致赋值if (yearMinus == 0) { //出生年份为当前年份age = 0;} else { //出生年份大于当前年份if (monthMinus < 0) {//出生月份小于当前月份时,还没满周岁age = age - 1;}if (monthMinus == 0) {//当前月份为出生月份时,判断日期if (dayMinus < 0) {//出生日期小于当前月份时,没满周岁age = age - 1;}}}System.out.println(age);return age;}// 判断身份证号是否合法public static Boolean judgeId(String id) {Boolean result = true;// 长度不等于 18 位if (id.length() != 18) {return false;}// 系数算法String tempId = getStr(id, 0, 16);int[] coeff = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};char[] end = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};int sum = 0;for (int i = 0; i < tempId.length(); i++) {int bye = tempId.charAt(i) - '0';sum += bye * coeff[i];}sum %= 11;if (end[sum] != getStr(id, 17, 17).charAt(0)) {result = false;}return result;}// 截取字符串的方法public static String getStr(String str, int a, int b) {b++;return str.substring(a, b);}

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

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

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

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

    身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1月1日出生)+3位顺序码 18位:6位地址码+8位出生年月日(19900101代表1990年1月1日出生)+3位顺序码+1 ...

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

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

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

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

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

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

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

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

  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. 2022-2028年中国服务机器人行业市场调查研究及前瞻分析报告
  2. Oracle针对SCOTT下EMP表的练习题
  3. 【算法+图像处理】2D卷积与快速卷积算法C语言实现
  4. XNA中FPS统计刷新率频率类
  5. 在K40小破卡训练50层BERT Large的宝藏trick
  6. win7让任务管理器pid显示出来的方法
  7. 2.1 maven配置多镜像地址
  8. php自动维护,window_Win7系统中的一些自动维护计划、任务关闭、禁用方法图文教程,  windows自动维护功能会在计 - phpStudy...
  9. 安装hdfs集群的具体步骤
  10. 自考本科计算机类专业查询,自考本科学位如何查询
  11. 远程运维方案选型指南:官网可下载的ZStack私有云平台 | 凌云时刻
  12. C++中指针优点与线程中指针变量访问
  13. php 改变图片大小,如何把照片尺寸改小 电子照片尺寸怎么改
  14. 计算机与经济学之关联刍议,西方五大经济学期刊发展趋势刍议
  15. java服务端监控平台设计
  16. 【深度长文】循序渐进解读Oracle AWR性能分析报告
  17. DNS云学堂 | 权威DNS那些事儿(上)
  18. T101对称二叉树(如何递归的经典demo)
  19. Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计
  20. 笔记本通过服务器提升性能,笔记本做服务器的配置

热门文章

  1. 页面居中、响应式布局的总结
  2. 【MATLAB常用函数总结】生成随机数-poissrnd函数
  3. 关于浏览器meta标签
  4. 人生如逆旅,不进则退:HTML5新元素的介绍与使用规范
  5. 整理流程引擎Flowable的前端流程设计器Modeler
  6. 正大国际琪貨纯手:“恒指期货”怎么交易?
  7. EXCEL散点图改横轴坐标
  8. 三种方式循环获取水仙花数
  9. SAP中使用MM01创建物料如何选定行业领域和物料类型
  10. 聚焦数字化转型共建生态,AWS中国的朋友圈越来越大了