根据身份证号码计算年龄(根据是否过生日判断周岁年龄)及性别

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;import org.apache.commons.lang3.StringUtils;public class MyDateUtils {private MyDateUtils() {throw new IllegalStateException("MyDateUtils class");}public static final String DATE_FORMAT_YMD = "yyyy-MM-dd";/*** 分析身份证号, 得出性别,年龄,是否有效年龄  * @param idCardNo* @return* @throws ParseException*/public static Map<String, Object> analyzingIdCardNo(String idCardNo) {Map<String, Object> rtnMap = new HashMap<>();Calendar sysCal = Calendar.getInstance();sysCal.set(Calendar.HOUR_OF_DAY, 0);sysCal.set(Calendar.MINUTE, 0);sysCal.set(Calendar.SECOND, 0);Calendar cardCal = Calendar.getInstance();cardCal.setTime(convertStr2Date(idCardNo.substring(6, 14)));// 计算年龄int age = sysCal.get(Calendar.YEAR) - cardCal.get(Calendar.YEAR);int sysMonth = sysCal.get(Calendar.MONTH);int cardMonth = cardCal.get(Calendar.MONTH);if (sysMonth <= cardMonth) {if (sysMonth == cardMonth) {if (sysCal.get(Calendar.DAY_OF_MONTH) < cardCal.get(Calendar.DAY_OF_MONTH))age--; // 当前日期在生日之前,则年龄减一} else {age--; // 当前月份在生日之前,则年龄减一}}// 性别int sex = Integer.parseInt(idCardNo.substring(16, 17)) % 2;// 判断岁数sysCal.add(Calendar.DAY_OF_MONTH, 60);cardCal.add(Calendar.YEAR, sex == 1 ?60 :50);if (cardCal.compareTo(sysCal) > 0) {rtnMap.put("ok", "1");rtnMap.put("性别", sex == 1 ?"男" :"女");rtnMap.put("年龄", age);}return rtnMap;}/*** 字串转日期(零时零分零秒)* @param dateStr* @param format  "yyyy-MM-dd/yyyyMMddHHmmss/yyyy-MM-dd HH:mm:ss"* @return* @throws ParseException*/public static Date convertStr2Date(String dateStr) {SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");try {return sdf.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return null;}/*** 日期格式化* @param date* @param fmt* @return*/public static String convertDate2Format(Date date, String fmt) {return new SimpleDateFormat(StringUtils.isBlank(fmt) ?DATE_FORMAT_YMD :fmt).format(date);}}

JAVA工具类-根据身份证进行性别和年龄计算相关推荐

  1. (6)常用的Java工具类

    目录 前言: 第一部分:常用的16个工具类 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache ...

  2. 干货:排名前 16 的 Java 工具类!

    2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类!   在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...

  3. 排名前 16 的 Java 工具类

    转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...

  4. beanutils工具类_16 个超级实用的 Java 工具类!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  5. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  6. Java工具类——UUIDUtils

    借用一下百度百科的解释,来看一下UUID是什么. UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Ope ...

  7. java 文本工具类_干货:排名前16的Java工具类

    原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...

  8. 干货:排名前16的Java工具类

    image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源 ...

  9. Java工具类——通过配置XML验证Map

    Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...

最新文章

  1. joomla 插入百度地图
  2. [转载] 七龙珠第一部——第002话 布玛没有尾巴
  3. 关于孵化器类型的创业公司-面试注意事项
  4. 在 JavaScript 中创建 JSON 对象
  5. oracle imp 包,oracle imp
  6. python读取多个文件夹下所有txt_Python实现合并同一个文件夹下所有txt文件的方法示例...
  7. docker开启mysql的binlog日志
  8. ECMAScript 函数--修改对象
  9. 【BERT】BERT中CLS效果真的好嘛?这篇文章告诉你答案
  10. java聚集_深入理解JAVA中的聚集和组合的区别与联系
  11. make的作用linux,Linux下./configure,make,make install的作用
  12. Android微信页面缓存清理,安卓用户如何彻底清理微信大量缓存?4招让你彻底解决内存烦恼...
  13. bing 搜索引擎 无法访问 bug
  14. gazebo仿真环境搭建+配置+小车运动仿真
  15. pycharm终端提示无法加载文件 F:\Users\Administrator\PycharmProjects\pythonProject\venv\Scripts\activate.ps1,因为在
  16. 李章最帅!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  17. 世界上最大的问题,就是最大的商业机会
  18. java Mail使用SSl,端口465加密发送邮件配置
  19. 智能可穿戴设备继续火 接入大数据帮你“管”身体
  20. 法国电信公司Orange削减英国电信集团股份至1.33%

热门文章

  1. 智慧景区人员定位方案
  2. php 如何查看vc版本信息,PHP版本中的VC6,VC9,VC11,TS,NTS区别
  3. DAX: 用SWITCH函数替换嵌套IF函数
  4. 雨林木风最新万能GHOST系统制作教程
  5. Python实现MATLAB bi2de函数
  6. CVPR 2022 | 阿里华科提出:针对场景文本检测的视觉语言模型预训练
  7. android自动对焦第一次对焦,Android自定义相机实现自动对焦和手动对焦
  8. sRGB HDR概念性学习
  9. 当 update 修改数据与原数据相同时会被更新吗?
  10. 谷歌浏览器 android 55,谷歌浏览器55稳定版|谷歌浏览器(Chrome 55稳定版)下载v55.0.2883.87官方正式版 - 欧普软件下载...