主要思路很简单:
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位身份证的按条件赋值。文章来源:https://www.toymoban.com/news/detail-532779.html
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-1128
String 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根据身份证号计算年龄文章来源地址https://www.toymoban.com/news/detail-532779.html
到了这里,关于java根据身份证号计算持有者年龄--超容易的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!