计算身份证中的年龄

news/2024/11/30 20:38:07/

计算身份证中的年龄

直接在mysql里面计算

#计算
select identity_card,(YEAR(NOW())- SUBSTRING(identity_card,7,4)) from his_declare_people ;
#查询
select identity_card from his_declare_people
where  (YEAR(NOW())- SUBSTRING(identity_card,7,4)) between #{ageID1} and  #{ageID2}

然后在网上搜索到的一个大兄弟写的在程序里面计算也可以,感觉不错,也写在下面了

    /*** 根据身份证的号码算出当前身份证持有者的年龄** @return*/public static int countAge(String idNumber) {if (idNumber.length() != 18 && idNumber.length() != 15) {throw new IllegalArgumentException("身份证号长度错误");}String year;String yue;String day;if (idNumber.length() == 18) {year = idNumber.substring(6).substring(0, 4);// 得到年份yue = idNumber.substring(10).substring(0, 2);// 得到月份day = idNumber.substring(12).substring(0, 2);//得到日} else {year = "19" + idNumber.substring(6, 8);// 年份yue = idNumber.substring(8, 10);// 月份day = idNumber.substring(10, 12);//日}Date date = new Date();// 得到当前的系统时间SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String fyear = format.format(date).substring(0, 4);// 当前年份String fyue = format.format(date).substring(5, 7);// 月份String fday = format.format(date).substring(8, 10);//int age = 0;if (Integer.parseInt(yue) == Integer.parseInt(fyue)) {//如果月份相同//说明已经过了生日或者今天是生日if (Integer.parseInt(day) <= Integer.parseInt(fday)) {age = Integer.parseInt(fyear) - Integer.parseInt(year);} else {age = Integer.parseInt(fyear) - Integer.parseInt(year) - 1;}} else {if (Integer.parseInt(yue) < Integer.parseInt(fyue)) {//如果当前月份大于出生月份age = Integer.parseInt(fyear) - Integer.parseInt(year);} else {//如果当前月份小于出生月份,说明生日还没过age = Integer.parseInt(fyear) - Integer.parseInt(year) - 1;}}System.out.println("age = " + age);return age;}

引用的博客地址: https://blog.csdn.net/Chen_chenjiasheng/article/details/120017848


http://www.ppmy.cn/news/726042.html

相关文章

根据身份证号计算周岁年龄

1、测试 import pandas as pd import datetime temp_data110221195404083625 v_start_datetemp_data[6:14] now datetime.datetime.now() now now.strftime(%Y%m%d) v_year_enddatetime.datetime.strptime(now, %Y%m%d).year v_month_enddatetime.datetime.strptime(now, %Y…

15/18位身份证号码正则表达式(详细版)

xxxxxx yyyy MM dd 375 0 十八位 xxxxxx yy MM dd 75 0 十五位 地区&#xff1a;[1-9]\d{5} 年的前两位&#xff1a;(18|19|([23]\d)) 1800-3999 年的后两位&#xff1a;\d{2} 月份&#xff1a;((0[1-9])|(10|11|12)) 天数&#xff1a;(([0-2][1-9…

身份证号码15位转18位

15位身份证号码组成规则 6位地区码6位出生年月日3位顺序码&#xff08;最后一位代表性别&#xff0c;奇数为男&#xff0c;偶数为女&#xff09; 18位身份证号码组成规则 6位地区码8位出生年月日3位顺序码&#xff08;最后一位代表性别&#xff0c;奇数为男&#xff0c;偶数…

身份证验证信息15位或18位

一、身份证号码的结构和表示形式 1、号码的结构 根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定&#xff0c;公民身份号码是特征组合码&#xff0c;由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为&#xff1a;六位数字地址码&#xff0c…

css文字图标(阿里图标)使用及引入方式

首先打开 iconfont图标 网页 选择素材库中的单色图标库 选择自己需要用的图标 这里简绍四种类型的引入方式&#xff0c;其中是网页上的三种引入方式&#xff1a; 1. Unicode 使用方式 复制代码 引入样式 (这里是线上引入 通过网址引入的) 引入样式注意路径完整性 标签中间放入…

后端常用api

Map map.computeIfAbsent() 1、首先会判断map中是否有对应的Key 2.1、如果没有对应的Key&#xff0c;则会创建一个满足Value类型的数据结构放到Value的位置中&#xff1b; 2.2、如果有对应的Key&#xff0c;则会操作该Key对应的Value. public static void main(String[] args) …

Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)

文章较长建议先收藏再看 拆解步骤 1、app 强制横屏显示&#xff0c;无视 android:screenOrientation“portrait” 属性 2、屏幕触摸坐标修改为横屏 3、开机动画横屏 4、开机logo、关机充电动画横屏 5、RecoveryUI 横屏 上代码 ##1、app 强制横屏显示 修改 rotationFor…

搬来一篇直播,视频相关理解的文章

前言 随着音视频领域的火热&#xff0c;在很多领域(教育&#xff0c;游戏&#xff0c;娱乐&#xff0c;体育&#xff0c;跑步&#xff0c;餐饮&#xff0c;音乐等)尝试做音视频直播/点播功能&#xff0c;那么作为开发一个小白&#xff0c;如何快速学习音视频基础知识&#xff0…