1. import com.alibaba.fastjson.JSON;
  2. import org.junit.Test;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. /**
  9. * @author ceshi
  10. * @Title: CardJunitTest
  11. * @ProjectName CardJunitTest
  12. * @Description: TODO
  13. * @date 2018/7/2622:53
  14. */
  15. public class CardJunitTest {
  16.  
  17. private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  18.  
  19. @Test
  20. public void test(){
  21. try {
  22. System.out.println(JSON.toJSON(identityCard18("**********")));
  23. System.out.println(JSON.toJSON(identityCard15("*********")));
  24. }catch (Exception e){
  25. e.printStackTrace();
  26. }
  27. }
  28.  
  29. /**
  30. * 18位身份证获取性别和年龄
  31. * @param CardCode
  32. * @return
  33. * @throws Exception
  34. */
  35. public static Map<String, Object> identityCard18(String CardCode) throws Exception {
  36. Map<String, Object> map = new HashMap<String, Object>();
  37. // 得到年份
  38. String year = CardCode.substring(6).substring(0, 4);
  39. // 得到月份
  40. String month = CardCode.substring(10).substring(0, 2);
  41. //得到日
  42. //String day=CardCode.substring(12).substring(0,2);
  43. String sex;
  44. // 判断性别
  45. if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {
  46. sex = "女";
  47. } else {
  48. sex = "男";
  49. }
  50. // 得到当前的系统时间
  51. Date date = new Date();
  52. // 当前年份
  53. String currentYear = format.format(date).substring(0, 4);
  54. // 月份
  55. String currentMonth = format.format(date).substring(5, 7);
  56. //String currentdDay=format.format(date).substring(8,10);
  57. int age = 0;
  58. // 当前月份大于用户出身的月份表示已过生日
  59. if (Integer.parseInt(month) <= Integer.parseInt(currentMonth)) {
  60. age = Integer.parseInt(currentYear) - Integer.parseInt(year) + 1;
  61. } else {
  62. // 当前用户还没过生日
  63. age = Integer.parseInt(currentYear) - Integer.parseInt(year);
  64. }
  65. map.put("sex", sex);
  66. map.put("age", age);
  67. return map;
  68. }
  69.  
  70. /**
  71. * 15位身份证获取性别和年龄
  72. * @param card
  73. * @return
  74. * @throws Exception
  75. */
  76. public static Map<String, Object> identityCard15(String card) throws Exception {
  77. Map<String, Object> map = new HashMap<String, Object>();
  78. //年份
  79. String year = "19" + card.substring(6, 8);
  80. //月份
  81. String yue = card.substring(8, 10);
  82. //日
  83. //String day=card.substring(10, 12);
  84. String sex;
  85. if (Integer.parseInt(card.substring(14, 15)) % 2 == 0) {
  86. sex = "女";
  87. } else {
  88. sex = "男";
  89. }
  90. // 得到当前的系统时间
  91. Date date = new Date();
  92. //当前年份
  93. String currentYear = format.format(date).substring(0, 4);
  94. //月份
  95. String currentMonth = format.format(date).substring(5, 7);
  96. //String fday=format.format(date).substring(8,10);
  97. int age = 0;
  98. //当前月份大于用户出身的月份表示已过生日
  99. if (Integer.parseInt(yue) <= Integer.parseInt(currentMonth)) {
  100. age = Integer.parseInt(currentYear) - Integer.parseInt(year) + 1;
  101. } else {
  102. // 当前用户还没过生日
  103. age = Integer.parseInt(currentYear) - Integer.parseInt(year);
  104. }
  105. map.put("sex", sex);
  106. map.put("age", age);
  107. return map;
  108. }
  109.  
  110. }

运行结果:

Java 身份证判断性别获取年龄的更多相关文章

  1. php通过身份证判断性别

    /** 已测试,百度很多写法不行的 * 1就是男性 2就是女性* 通过身份证获取性别类型* @param type $card* @return int*/function getCardSex($i ...

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

      1.情景展示 如何根据身份证号,计算出出生日期.性别.年龄? 2.解决方案 从网上找的别人的,因为并没有实际用到,所以并未对其优化! /** * 通过身份证号码获取出生日期.性别.年龄 * @pa ...

  3. java根据身份证号和获取用户年龄和性别的工具类

    import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util ...

  4. Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳

    Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳 早期的身份证号码为15位数字,现在使用的身份证号码为18位数字,它们的含义如下:(1)15位:1-6位为地区代码,7-8位 ...

  5. js脚本根据身份证号获取性别、年龄、家庭地址、生日

    做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个

  6. js 根据身份证号获取性别,年龄,等

    $(function(){        $("#corpOwnerIdno").blur(function(){          //获取输入身份证号码             ...

  7. IOS 根据身份证号码获取 年龄 生日 性别

    /** 从身份证上获取年龄 18位身份证 */ -(NSString *)getIdentityCardAge:(NSString *)numberStr { NSDateFormatter *for ...

  8. Excel自动从身份证中提取生日、性别、年龄

    现在学生的身份证号已经全部都是18位的新一代身份证了,里面的数字都是有规律的.前6位数字是户籍所在地的代码,7-14位就是出生日期.第17位“2”代表的是性别,偶数为女性,奇数为男性.我们要做的就是把 ...

  9. CardUtil算出当前身份证持有者的性别和年龄

    import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util ...

随机推荐

  1. nopi 简洁笔记

    导出excel /// <summary> /// 增加二维码 /// </summary> /// <param name="dt">< ...

  2. inode 与black 特点与简介

    inodo为索引节点, 存放文件属性的信息(实际文件位置与容量信息 /black文件属性) 作用在格式化文件系统时候产生 创建一个文件就占用一个inode 数字相同为硬链接 black为实际数据/内容 ...

  3. LeetCode 81 搜索旋转排序数组II

    题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] ). 编写一个函数来判断给定的目标值是否存在于 ...

  4. mysql错误集合

    一.This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法 这是我们开启了bin-log ...

  5. `ifdef、`else、`endif 用法

    一般情况下,Verilog HDL源程序中所有的行都参加编译.但是有时候希望对其中的一部份内容只有在条件满足的时候才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足条件 ...

  6. Linux设备驱动程序 第三版 读书笔记(一)

    Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...

  7. 剑指Offer 28. 数组中出现次数超过一半的数字 (数组)

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  8. 2.oracle之用户管理sql

    --创建用户--create user  用户名  identified by  密码;create user jojo identified by bean; --给用户授权--grant conn ...

  9. LINUX系统配置

    LINUX系统配置 Linux 安装jdk方法; Linux Tomcat 安装与配置 Linux redis 安装与配置 (例1) Linux redis安装配置(例2) NGINX 安装 Linu ...

  10. hadoop day 5

    1.Zookeeper Zookeeper的安装和配置(集群模式) 1)在conf目录下创建一个配置文件zoo.cfg, tickTime=2000——心跳检测的时间间隔(ms) dataDir=/U ...