public static String extractBirthDate(String idCard) {
// 判断证件号码长度
if (idCard == null || idCard.length() < 14) {
return null;
}
// 如果是14位证件号码,补充后四位为"****"
if (idCard.length() == 14) {
idCard = idCard + "****"; // 补充后四位为"****"
}
// 检查证件号码最后四位是否为 '*',如果是,则去除它
if (idCard.substring(14, 18).equals("****")) {
idCard = idCard.substring(0, 14); // 只取前14位
}
// 获取出生日期部分(第7到第14位,表示出生年月日)
String birthDate = idCard.substring(6, 14);
// 格式化为 YYYY-MM-DD 格式
return birthDate.substring(0, 4) + "-" + birthDate.substring(4, 6) + "-" + birthDate.substring(6, 8);
}
public static void main(String[] args) {
// 测试
String idCard1 = "110101199001010000";
String idCard2 = "11010119900101****";
String idCard3 = "11010119900101"; // 没有后四位的情况
System.out.println(idCard3.length());
System.out.println("出生日期1: " + extractBirthDate(idCard1)); // 1990-01-01
System.out.println("出生日期2: " + extractBirthDate(idCard2)); // 1990-01-01
System.out.println("出生日期3: " + extractBirthDate(idCard3)); // 1990-01-01
}
