主要思路很简单:

1.通过当前年份和用户出生年份相减计算出age :用户当年还没过生的话,age要减一。

2.在身份证截取根据“月日”拼接成开头可以为0的四位数int值。根据当前月日值和用户出生月日对比大小,一步判断age是否要减一。避免了月份判断月份相同等和日期的繁琐判断。

例如用户:2000-12/15 生日  (int)1215>1128,用户 age=22-1=21

用户:2000-05/23 生日  (int)0523<1128 , 用户 age=22

以下就是代码实现,身份证截取2000(年)、1215(月日),当前时间转成 yyyy-MMdd 也截取相同的值计算。再加上字符长度合法性校验,以及18位和15位身份证的按条件赋值。

public static int countAge(String idCard) {if (idCard.length() != 18 && idCard.length() != 15) {throw new IllegalArgumentException("身份证号长度错误");}String year;String monthDay;if (idCard.length() == 18) {year = idCard.substring(6,10);monthDay = idCard.substring(10,14);} else {year = "19" + idCard.substring(6, 8);monthDay = idCard.substring(8, 12);}//获取当前时间字符串如:2022-1128String nowTimeStr = new SimpleDateFormat("yyyy-MMdd").format(new Date());String yearNow = nowTimeStr.substring(0, 4);// 当前年份String monthDayNow = nowTimeStr.substring(5, 9);// 当前月日int age = Integer.parseInt(yearNow) - Integer.parseInt(year);//age减一的情况 :用户月日大于当前月日(开头可以为0的4位数int)if (Integer.parseInt(monthDay) > Integer.parseInt(monthDayNow)) {age = age - 1;}return age;}

参考博客:Java 身份证号 计算年龄、性别_陈賝的博客-CSDN博客_java根据身份证号计算年龄

java根据身份证号计算持有者年龄--超容易相关推荐

  1. Java 根据身份证号计算周岁年龄 工具类

    package com.yao.utils; import java.util.Calendar; /**  * 根据身份证号计算周岁年龄  * @author yaodd  * @date 2021 ...

  2. java通过身份证号计算周岁年龄(附js计算)

    最近项目上有一个需要根据身份证获取老人周岁的功能,本以为当前年直接减去身份证的出生年就好了.结果测试提了过了生日就是+1岁,没过生日才是正确的.于是呼,哗哗的改代码.下面分别贴出java计算和js计算 ...

  3. Java根据身份证号计算年龄

    可以使用Java中的SimpleDateFormat类将身份证号中的出生日期解析为日期类型,然后使用ChronoUnit类计算出生日期和当前日期之间的时间差,最后除以365即可得到年龄. 代码示例如下 ...

  4. 通过身份证号 计算退休日期 例男60岁,女55岁退休

    Java通过身份证号 计算退休日期 例男60岁,女55岁退休 直接上代码 /*** 根据身份证号计算退休日期* @return*/@ApiOperation("根据身份证号计算账号有效期&q ...

  5. sql server 根据身份证号计算出生日期和年龄的存储过程

    我这边有一个业务,需要客户填写身份证号,自动计算他的出生日期和年龄 在sql中,具体的存储过程实现是这样的: /******************************************** ...

  6. js中如何通过身份证号计算出生日期和年龄

    在html中有如下标签 身份证号:<input type="text" id="Gra_IDCard" onChange="IDCardChan ...

  7. 在JS中根据身份证号计算出生日期和年龄

    1.根据身份证号计算出生日期 var identificationCardid=document.getElementById("identificationCardid").va ...

  8. EXCEL表格-根据身份证号计算性别、年龄(IF、MOD函数)

    ❤关注我,不迷路❤ 点击进入EXCEL综合应用场景专栏 本篇文章将介绍如何根据身份证号来计算出年龄.性别,先来讲解一些基础知识: 身份证号共18位,其中: (1)前1.2位数字表示:所在省份的代码: ...

  9. 根据身份证号计算年龄

    根据身份证号计算年龄     /// <summary>     /// 计算年龄     /// </summary>     /// <param name=&quo ...

最新文章

  1. 使用 Strace 调试工具
  2. 数据通信技术(十:OSPF特殊区域TOTALLY STUB配置(ZTE))
  3. Maven下载、安装和配置(转)
  4. include_fns.php_管理页面
  5. f函数java_Java流:对N-1个元素执行f(),对N个元素执行g(),即,最后一个元素使用不同的函数...
  6. 有没有一些细分IT行业,没有35岁现象
  7. java颠倒字符串_Java经典实例:按字符颠倒字符串
  8. SpringMVC 环境搭建
  9. mybatis原始mapper开发未集成springMVC
  10. python3怎么安装docx_如何在 Python 3.4 上安装 python-docx
  11. linux锁定系统时间设置,Linux时间设置系统时间、硬件时间和时间服务
  12. 手把手教你写一个web聊天室之bookstap框架
  13. iOS 10 消息推送(UserNotifications)秘籍总结(一)
  14. pytorch中加入注意力机制(CBAM),以ResNet为例。到底要不要用ImageNet预训练?如何加预训练参数?
  15. 已有一个排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中
  16. 解惑“可观测性”与“监控”的不同
  17. 谷歌浏览器Google Chrome插件分享
  18. 【新人入门】HTML——前端纯小白新手入门
  19. 计算机英语写作话题,computer的英语话题作文
  20. 批处理获取笔记本电池状态

热门文章

  1. Android 9.0 去除锁屏界面及SystemUI无sim卡拨打紧急电话控件显示功能实现
  2. Python处理PDF神器PyMuPDF的安装与使用
  3. 工业机器人码垛教学实施_《工业机器人码垛工作站安装与调试》教学设计文本.doc...
  4. #Tensorflow Process finished with exit code 3#
  5. Cadence基本操作之——SOIC封装
  6. 【wpf】如果让Bingding 如何让后台数据强制更新界面
  7. flex-flex属性
  8. 水纹效果(Water)源程序.
  9. Herb Sutter简介
  10. UPC 2020年夏混合个人训练第八十一场