
我们假设一个场景,当你与前端进行交互时,前端显示用户信息需要一个age年龄显示,但是数据库表的设计却没有age这个字段只给了一个身份证号,这个时候你该怎么办呢?
接下来为大家解决这个烦恼的问题,首先我们需要自己编写一个工具类,附上代码
public static Integer getAgeByIdCard(String idCard) throws ParseException {
char[] chars = idCard.substring(6, idCard.length() - 4).toCharArray();
StringBuffer birthday=new StringBuffer();
for (int i=0;i
if(i==3||i==5){
birthday.append("-");
}
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date currentDate = new Date();
int currentYear = currentDate.getYear()+1900;
int currentMonth = currentDate.getMonth()+1;
int currentDay = currentDate.getDay();
Date birthdayDate = simpleDateFormat.parse(String.valueOf(birthday));
int age=currentYear-(birthdayDate.getYear()+1900);
int myDay=birthdayDate.getDay();
int myMonth=birthdayDate.getMonth()+1;
if(myMonth>currentMonth){
age-=1;
}
else if(myMonth==currentMonth){
if (myDay < currentDay) {
age-=1;
}
}
return age;
}
测试效果:
String idCard="430223200001020213";
try {
Integer ageByIdCard = getAgeByIdCard(idCard);
System.out.println(ageByIdCard);
} catch (ParseException e) {
e.printStackTrace();
}
输出结果:
是不是得到了我们想要的年龄呢,其实代码非常简单,就是将我们的身份证号拆分开,获取年月日所在的字符位置然后装起来再遍历一下就可以获得到一个年-月-日的字符串,然后我们再使用Date时间函数做一个判断就能得到一个具体的时间。
学会了记得点个赞哦。