package com.acat.util;import org.apache.commons.lang.StringUtils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** @Description:身份证号的util* @Author:* @Date: Created in 11:26 2019-03-27* @Modified By:*/
public class IDCardUtil {/*** 15位身份证号*/private static final Integer FIFTEEN_ID_CARD=15;/*** 18位身份证号*/private static final Integer EIGHTEEN_ID_CARD=18;private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");/*** 根据身份证号获取性别* @param IDCard* @return*/public static String getSex(String IDCard){String sex ="";if (StringUtils.isNotBlank(IDCard)){//15位身份证号if (IDCard.length() == FIFTEEN_ID_CARD){if (Integer.parseInt(IDCard.substring(14, 15)) % 2 == 0) {sex = "女";} else {sex = "男";}//18位身份证号}else if(IDCard.length() == EIGHTEEN_ID_CARD){// 判断性别if (Integer.parseInt(IDCard.substring(16).substring(0, 1)) % 2 == 0) {sex = "女";} else {sex = "男";}}}return sex;}/*** 根据身份证号获取年龄* @param IDCard* @return*/public static Integer getAge(String IDCard){Integer age = 0;Date date = new Date();if (StringUtils.isNotBlank(IDCard)&& isValid(IDCard)){//15位身份证号if (IDCard.length() == FIFTEEN_ID_CARD){// 身份证上的年份(15位身份证为1980年前的)String uyear = "19" + IDCard.substring(6, 8);// 身份证上的月份String uyue = IDCard.substring(8, 10);// 当前年份String fyear = format.format(date).substring(0, 4);// 当前月份String fyue = format.format(date).substring(5, 7);if (Integer.parseInt(uyue) <= Integer.parseInt(fyue)) {age = Integer.parseInt(fyear) - Integer.parseInt(uyear) + 1;// 当前用户还没过生} else {age = Integer.parseInt(fyear) - Integer.parseInt(uyear);}//18位身份证号}else if(IDCard.length() == EIGHTEEN_ID_CARD){// 身份证上的年份String year = IDCard.substring(6).substring(0, 4);// 身份证上的月份String yue = IDCard.substring(10).substring(0, 2);// 当前年份String fyear = format.format(date).substring(0, 4);// 当前月份String fyue = format.format(date).substring(5, 7);// 当前月份大于用户出身的月份表示已过生日if (Integer.parseInt(yue) <= Integer.parseInt(fyue)) {age = Integer.parseInt(fyear) - Integer.parseInt(year) + 1;// 当前用户还没过生日} else {age = Integer.parseInt(fyear) - Integer.parseInt(year);}}}return age;}/*** 获取出生日期  yyyy年MM月dd日* @param IDCard* @return*/public static String getBirthday(String IDCard){String birthday="";String year="";String month="";String day="";if (StringUtils.isNotBlank(IDCard)){//15位身份证号if (IDCard.length() == FIFTEEN_ID_CARD){// 身份证上的年份(15位身份证为1980年前的)year = "19" + IDCard.substring(6, 8);//身份证上的月份month = IDCard.substring(8, 10);//身份证上的日期day= IDCard.substring(10, 12);//18位身份证号}else if(IDCard.length() == EIGHTEEN_ID_CARD){// 身份证上的年份year = IDCard.substring(6).substring(0, 4);// 身份证上的月份month = IDCard.substring(10).substring(0, 2);//身份证上的日期day=IDCard.substring(12).substring(0,2);}birthday=year+"年"+month+"月"+day+"日";}return birthday;}
}

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

  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. 身份证号码中,年龄、性别的提取方法

    以18位居民身份证号码为例 SFZH="320705197803240519" *----"年龄"提取方法: DDATE=CTOD(STUFF(STUFF(SU ...

  4. access通过身份证号提取性别_Access计算根据身份证号码字段计算年龄和性别的表达式,最好是还能确定户籍地址,该在什么地方输入?...

    谢谢你的帮助,我已经提高了分数,相信非你莫属了,也许是我不知道用法,我也是在OFFICE 2003 ACCESS 中用的,总之让你费心了,能够直接发个已经通过测试的文件给我就好了 自己改了一下,成功了 ...

  5. JS通过 身份证号码 获取 出生年月日 和 性别

    了解两个 API String.substr(start,length)  -- start,开始截取下标  length,截取的长度 String.replace(/(.{4})(.{2})/,&q ...

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

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

  7. JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别

    目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...

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

    /*** 通过身份证号码获取出生日期.性别.年龄** @param certificateNo* @return 返回的出生日期格式:1990-01-01 性别格式:F-女,M-男*/public s ...

  9. java验证身份证号码是否有效源代码

    转载自   java验证身份证号码是否有效源代码 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.t ...

最新文章

  1. 【LeetCode】198.打家劫舍
  2. MYSQL中 ENUM 类型
  3. 开源、开放网络和SDN三者区别—Vecloud微云
  4. 白皮书下载 |《产品用户体验的数据化评估》
  5. python3.7保存_python3.7爬取墨菲定律保存在本地txt
  6. 排序算法复习—希尔排序
  7. vivado修改block design后更新进sdk
  8. vim怎么把一个写的代码文件另存到任意文件夹里?
  9. python 画笔画一些形状(八卦图、小鸭子、五角星等)
  10. 旭凤锦覓虐心 恋只愿共赴鸿蒙,【香蜜同人】所爱隔山海(旭凤X锦觅X润玉)
  11. SpringBoot实战笔记:记一次接口406错误的解决
  12. 質量機能展開(QFD)的使用及注意事項簡析
  13. 阅读并理解lv_demo_widgets()函数
  14. FM-分解机模型详解
  15. 汇通达再度冲刺港交所上市:整体毛利率低下,已有股东提前退出
  16. IT十年人生过客2-毕业季
  17. 高级灰+中国红,这才是家应该有的样子
  18. 区块链中的Merkle树
  19. facebook浏览器插件_Facebook容器将Facebook与Firefox浏览器的其余部分隔离开
  20. sql server数据库期末考

热门文章

  1. pythonurllib新浪微博_Python 爬虫如何机器登录新浪微博并抓取内容?
  2. 应用化工技术学计算机不,应用化工技术专业主要学什么?
  3. 10 个高频 Python 面试题
  4. 双旋风除尘器-铸造废气处理装置(基于螺旋式分级除尘)
  5. 数据库的简单查询和复杂查询
  6. 功率放大器科普知识(晶体管功率放大器的注意事项)
  7. 各大平板电视厂商的音效技术(转) ---一篇较老的文章
  8. common prep
  9. linux全局变量区空间多大,从cplb_data全局变量看uclinux的存储空间划分
  10. ASS特效字幕自学记录01