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()); } } }