import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

public class CardUtil {

/**

* 根据身份证的号码算出当前身份证持有者的性别和年龄 18位身份证

*

* @return

* @throws Exception

*/

public static Map<String, Object> getCarInfo(String CardCode)

throws Exception {

Map<String, Object> map = new HashMap<String, Object>();

String year = CardCode.substring(6).substring(0, 4);// 得到年份

String yue = CardCode.substring(10).substring(0, 2);// 得到月份

// String day=CardCode.substring(12).substring(0,2);//得到日

Integer sex;

if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {// 判断性别

sex =1; //"女";

} else {

sex =0; //"男";

}

Date date = new Date();// 得到当前的系统时间

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String fyear = format.format(date).substring(0, 4);// 当前年份

String fyue = format.format(date).substring(5, 7);// 月份

// String fday=format.format(date).substring(8,10);

int age = 0;

if (Integer.parseInt(yue) <= Integer.parseInt(fyue)) { // 当前月份大于用户出身的月份表示已过生

age = Integer.parseInt(fyear) - Integer.parseInt(year) + 1;

} else {// 当前用户还没过生

age = Integer.parseInt(fyear) - Integer.parseInt(year);

}

map.put("sex", sex);

map.put("age", age);

return map;

}

/**

* 15位身份证的验证

*

* @param

* @throws Exception

*/

public static Map<String, Object> getCarInfo15W(String card)throws Exception {

Map<String, Object> map = new HashMap<String, Object>();

String uyear = "19" + card.substring(6, 8);// 年份

String uyue = card.substring(8, 10);// 月份

// String uday=card.substring(10, 12);//日

String usex = card.substring(14, 15);// 用户的性别

String sex;

if (Integer.parseInt(usex) % 2 == 0) {

sex = "女";

} else {

sex = "男";

}

Date date = new Date();// 得到当前的系统时间

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String fyear = format.format(date).substring(0, 4);// 当前年份

String fyue = format.format(date).substring(5, 7);// 月份

// String fday=format.format(date).substring(8,10);

int age = 0;

if (Integer.parseInt(uyue) <= Integer.parseInt(fyue)) { // 当前月份大于用户出身的月份表示已过生

age = Integer.parseInt(fyear) - Integer.parseInt(uyear) + 1;

} else {// 当前用户还没过生

age = Integer.parseInt(fyear) - Integer.parseInt(uyear);

}

map.put("sex", sex);

map.put("age", age);

return map;

}

}

CardUtil算出当前身份证持有者的性别和年龄的更多相关文章

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

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

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

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

  3. sqlalchemy 模型中添加根据身份证号计算性别和年龄

    class Users(Base, BaseMixin): username = Column(String(24)) id_Num = Column(String(18) ) # 身份证号码 @pr ...

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

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

  5. PHP通过身份证号码获取性别、出生日期、年龄等信息

    $sex = substr($idcard, (strlen($idcard)==18 ? -2 : -1), 1) % 2 ? '1' : '2'; //18位身份证取性别,倒数第二位奇数是男,偶数 ...

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

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

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

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

  8. iOS之由身份证号返回性别

    该博文出自:http://www.cnblogs.com/yang-guang-girl/p/5683454.html - (void)viewDidLoad { [super viewDidLoad ...

  9. 【代码笔记】iOS-由身份证号码返回性别

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

随机推荐

  1. Centos7 增量备份数据脚本

    #!bin/bash#Automatic Backup Linux System Files#By Author www.jfedu.net#Define VariablesSOURCE_DIR=( ...

  2. Object类.时间日期类.System类.Stringbuilder类.包装类

    Object类 java.lang.Object类是java语言中的根类,即所有类的父类.它中描述的所有方法都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, ...

  3. org.apache.ibatis.exceptions.PersistenceException:

    org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.Ill ...

  4. python基础语法10 函数递归,模块,软件开发目录规范

    函数递归: 函数递归指的是重复 “直接调用或间接调用” 函数本身, 这是一种函数嵌套调用的表现形式. 直接调用: 指的是在函数内置,直接调用函数本身. 间接调用: 两个函数之间相互调用间接造成递归. ...

  5. git更换仓库,保留分支,保留提交记录及开发权限

    别人推荐的方法都很复杂,这个步骤自己亲自尝试过,非常简单好用. 1.从原地址克隆一份裸版本库,比如原本托管于 GitHub. git clone --bare https://github....(原 ...

  6. SpringMVC+Mybatis学习

    简单Web项目搭建: 一.流程 1. 导包 n个springMVC: 2个mybatis<其中一个是mybatis-spring>: 3个jackson包: 2. xml配置 web.xm ...

  7. 热修复技术沉思:jspatch

    硬修复: 直接修改工程源码,重新发版: 冷修复: 打补丁包,使用动态库和hook技术,在程序启动时完成问题代码修复:案例:iOS逆向工程: 特征:不修改原始代码.补丁发布.目前不支持动态发布: 热修复 ...

  8. 为什么 JVM 不用 JIT 全程编译?

    考虑到跨平台,所以无法使用AOT: 考虑到执行效率,所以无法全部使用JIT: 编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中:另一种是 ...

  9. Numpy | 08 切片和索引

    ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样. (1)ndarray 数组索引可以基于 0 - n 的下标进行: (2)切片对象可以通过内置的 ...

  10. dotnetcore docker 简单运行

    今天试用了下mac 版本的dotnetcore sdk,发现还是很方便的,同时官方的容器运行方式,相对小了好多 同时使用多阶段构建的方式运行dotnetcore 安装sdk 下载地址: https:/ ...