通过身份证获取年龄和性别
需要引入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("身份证号码格式错误");}}}
通过身份证获取年龄和性别相关推荐
- java身份证工具类(校验身份证是否合法、通过身份证获取年龄、性别、生日,将15位身份证转为18位等)
一.简介 因为工作需要经常用到身份证做一些相关操作,于是通过查阅资料总结出一些常用的工具方法,包括校验身份证是否合法.通过身份证获取年龄.通过身份证获取性别.通过身份证获取户籍地址.通过身份证获取生日 ...
- sql根据身份证获取年龄、性别、出生日期等信息
#属性nl为年龄;sfzh为身份证号;xb 为性别;csrq 为出生日期 #根据身份证计算年龄并修改 update kw_test set nl= (substring(now(),1,4)-subs ...
- Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳...
Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳 早期的身份证号码为15位数字,现在使用的身份证号码为18位数字,它们的含义如下: (1)15位:1-6位为地区代码,7-8 ...
- 利用python识别身份证号后获取年龄和性别信息
利用python识别身份证号后获取年龄和性别信息 1. 实验目的 利用python识别身份证号后,从身份证号中获取年龄和性别信息 2. 主代码 1. 身份证号码识别 # !/usr/bin/pytho ...
- JAVA 根据身份证获取年龄
JAVA 根据身份证获取年龄 这里我选用了一条19900407的, 今天的日期是2021/04/10 显示的年龄为31岁. private static int getAge(String idCar ...
- orcal根据身份证获取年龄
--根据身份证获取年龄 select floor(months_between(SYSDATE, to_date(substr2(a.identifynumber, 7, 8), 'yyyy-mm ...
- 根据身份证获取姓名和性别
身份证号码解析: (1)前1.2位数字表示:所在省份的代码: (2)第3.4位数字表示:所在城市的代码: (3)第5.6位数字表示:所在区县的代码: (4)第7~14位数字表示:出生年.月.日: (5 ...
- 根据身份证获取信息(性别,生日,年龄,是否正确,生肖,星座)
/*** 根据身份证号码获取性别* author:xiaochuan* @param string $idcard 身份证号码* @return int $sex 性别 1男 2女 0未知*/ fun ...
- php 验证身份证(获取年龄、性别、出生日期)
// PHP 根据身份证号,自动获取对应的星座函数 function get_xingzuo($cid) { // 根据身份证号,自动返回对应的星座if (!isIdCard($cid)) retur ...
最新文章
- ssl以及构建私有CA
- python递归详解+汉诺塔小案例_汉诺塔,python递归实现解法步骤
- 【安全漏洞】黑客利用IE 0 day漏洞部署VBA恶意软件
- apache密码生成工具htpasswd使用详解
- python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法
- linux 下opencv安装教程,linux 下 opencv安装
- redis storm mysql_flume+kafka+storm+redis/mysql启动命令记录
- linux java输出到文件,linux java输出到文件内容
- AndroidStudio_下载和安装---Android原生开发工作笔记67
- java读取.properties文件乱码
- 前端面试之你可能会遇到的编程题(1)
- 十.jmeter性能测试基础实践(2)
- 详解分布式系统与消息投递(架构师必备)
- java 菜刀_Java中国菜刀(Cknife)的模拟终端乱码解决方法 | 【韩涛博客】
- PUBG 绝地逃亡 吃鸡压枪宏 彩虹六号压枪宏 Autohotkey
- 计算机校本培训 培训总结,校本培训工作总结(2015—2016学年度)
- 网络工程师还吃香吗?
- 蓝桥杯——摔手机 动态规划
- 多次办理这项公积金业务都涉及到查询信用报告,是否会影响将来申请贷款?
- Ubuntu拔掉挂载硬盘后一直卡在ubuntu的logo处以及windows强制关机会出现ubuntu出现系统恢复模式