package com.ruoyi.system.utils.util;
|
|
import java.time.LocalDate;
|
import java.time.Period;
|
import java.time.format.DateTimeFormatter;
|
|
public class IDCardAgeCalculator {
|
|
public static int calculateAge(String idCard) {
|
// 检查身份证号码是否为18位
|
if (idCard == null || idCard.length() != 18) {
|
throw new IllegalArgumentException("身份证号码必须为18位");
|
}
|
|
// 解析出生日期
|
String birthDateStr = idCard.substring(6, 14); // 获取出生日期部分
|
LocalDate birthDate = LocalDate.parse(birthDateStr, DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
// 获取当前日期
|
LocalDate currentDate = LocalDate.now();
|
|
// 计算年龄
|
Period period = Period.between(birthDate, currentDate);
|
int age = period.getYears(); // 直接获取年份差即为年龄
|
|
return age;
|
}
|
|
public static void main(String[] args) {
|
String idCard = "110105194912311234"; // 示例身份证号码
|
try {
|
int age = calculateAge(idCard);
|
System.out.println("年龄: " + age);
|
} catch (Exception e) {
|
System.out.println(e.getMessage());
|
}
|
}
|
}
|