需要引入commons-lang包

package com.zjx.util;import org.apache.commons.lang.StringUtils;import java.text.SimpleDateFormat;
import java.util.Date;/*** @author zhaojiaxing* @version 1.0* @description 身份证相关工具类* @Date 2019/04/11 9:46*/
public class CardUtil {/*** 根据身份证获取年龄*  18位身份证的7到14位代表出生日期* 15位身份证的7-12位代表出生日期,省略了19前缀,比如1949年10月1日出生则为491001* @param cardCode* @return: java.lang.Integer* @author: zhaojiaxing* @createTime: 2019/11/11 0011 11:39*/public static Integer getAge(String cardCode) {judgeCard(cardCode);int length = cardCode.length() == 18 ? 14 : 12;//先获取生日串(15位身份证都是2000年以前出生的)String birthday = cardCode.length() == 18 ? cardCode.substring(6, length) : "19".concat(cardCode.substring(6, length));//通过生日获取年月日int year = Integer.parseInt(birthday.substring(0, 4));int month = Integer.parseInt(birthday.substring(4, 6));int day = Integer.parseInt(birthday.substring(6, 8));// 得到当前的系统时间并获取当前的年月日String localDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());int localYear = Integer.parseInt(localDate.substring(0, 4));int localMonth = Integer.parseInt(localDate.substring(5, 7));int localDay = Integer.parseInt(localDate.substring(8, 10));int age = localYear - year;//如果日期小于当前日期则减一(还未过生,年龄不变)if(localMonth < month || (localMonth == month && localDay < day)){age--;}return age;}/*** 根据身份证号码判断用户男女* 1 男  2 女* 返回值可以根据自己业务需求定义* 原理:18位身份证的17位代表性别:奇数为男,偶数为女*            15位身份证的15位代表性别:奇数为男,偶数为女* @param cardCode* @return: java.lang.Integer* @author: zhaojiaxing* @createTime: 2019/11/11 0011 11:45*/public static Integer getSex(String cardCode) {judgeCard(cardCode);String sign = cardCode.length() == 18 ? cardCode.substring(16, 17) : cardCode.substring(14, 15);return Integer.parseInt(sign) % 2 == 0 ? 2 : 1;}/*** 判断身份证格式* @param cardCode* @return: java.lang.Integer* @author: zhaojiaxing* @createTime: 2019/12/25 0011 11:45*/private static void judgeCard(String cardCode){if (StringUtils.isEmpty(cardCode) || (cardCode.length() != 15 && cardCode.length() != 18)) {throw new RuntimeException("身份证号码格式错误");}}}

通过身份证获取年龄和性别相关推荐

  1. java身份证工具类(校验身份证是否合法、通过身份证获取年龄、性别、生日,将15位身份证转为18位等)

    一.简介 因为工作需要经常用到身份证做一些相关操作,于是通过查阅资料总结出一些常用的工具方法,包括校验身份证是否合法.通过身份证获取年龄.通过身份证获取性别.通过身份证获取户籍地址.通过身份证获取生日 ...

  2. sql根据身份证获取年龄、性别、出生日期等信息

    #属性nl为年龄;sfzh为身份证号;xb 为性别;csrq 为出生日期 #根据身份证计算年龄并修改 update kw_test set nl= (substring(now(),1,4)-subs ...

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

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

  4. 利用python识别身份证号后获取年龄和性别信息

    利用python识别身份证号后获取年龄和性别信息 1. 实验目的 利用python识别身份证号后,从身份证号中获取年龄和性别信息 2. 主代码 1. 身份证号码识别 # !/usr/bin/pytho ...

  5. JAVA 根据身份证获取年龄

    JAVA 根据身份证获取年龄 这里我选用了一条19900407的, 今天的日期是2021/04/10 显示的年龄为31岁. private static int getAge(String idCar ...

  6. orcal根据身份证获取年龄

    --根据身份证获取年龄 select   floor(months_between(SYSDATE, to_date(substr2(a.identifynumber, 7, 8), 'yyyy-mm ...

  7. 根据身份证获取姓名和性别

    身份证号码解析: (1)前1.2位数字表示:所在省份的代码: (2)第3.4位数字表示:所在城市的代码: (3)第5.6位数字表示:所在区县的代码: (4)第7~14位数字表示:出生年.月.日: (5 ...

  8. 根据身份证获取信息(性别,生日,年龄,是否正确,生肖,星座)

    /*** 根据身份证号码获取性别* author:xiaochuan* @param string $idcard 身份证号码* @return int $sex 性别 1男 2女 0未知*/ fun ...

  9. php 验证身份证(获取年龄、性别、出生日期)

    // PHP 根据身份证号,自动获取对应的星座函数 function get_xingzuo($cid) { // 根据身份证号,自动返回对应的星座if (!isIdCard($cid)) retur ...

最新文章

  1. ssl以及构建私有CA
  2. python递归详解+汉诺塔小案例_汉诺塔,python递归实现解法步骤
  3. 【安全漏洞】黑客利用IE 0 day漏洞部署VBA恶意软件
  4. apache密码生成工具htpasswd使用详解
  5. python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法
  6. linux 下opencv安装教程,linux 下 opencv安装
  7. redis storm mysql_flume+kafka+storm+redis/mysql启动命令记录
  8. linux java输出到文件,linux java输出到文件内容
  9. AndroidStudio_下载和安装---Android原生开发工作笔记67
  10. java读取.properties文件乱码
  11. 前端面试之你可能会遇到的编程题(1)
  12. 十.jmeter性能测试基础实践(2)
  13. 详解分布式系统与消息投递(架构师必备)
  14. java 菜刀_Java中国菜刀(Cknife)的模拟终端乱码解决方法 | 【韩涛博客】
  15. PUBG 绝地逃亡 吃鸡压枪宏 彩虹六号压枪宏 Autohotkey
  16. 计算机校本培训 培训总结,校本培训工作总结(2015—2016学年度)
  17. 网络工程师还吃香吗?
  18. 蓝桥杯——摔手机 动态规划
  19. 多次办理这项公积金业务都涉及到查询信用报告,是否会影响将来申请贷款?
  20. Ubuntu拔掉挂载硬盘后一直卡在ubuntu的logo处以及windows强制关机会出现ubuntu出现系统恢复模式

热门文章

  1. 推荐系统TopN推荐评测指标
  2. 2023年湖北中级工程师在哪里评审?秋禾火
  3. linux开启某个端口
  4. 铁威马NAS教程之如何为NAS创建新用户
  5. python 如何将一个字符串转成时间_如何把python 字符串转换为utc时间?
  6. 前端js获取当前年月日时间
  7. 机器学习实战教程(二):决策树
  8. thymeleaf取值域名加不加#的区别
  9. Linux下 python脚本的编写(一)
  10. 本周游戏体验:卧虎藏龙