zjh
6 天以前 cbc1828ae240e37a37670f2760b80649c11679e2
ltkj-admin/src/test/java/zjhTest.java
@@ -1,4 +1,5 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import com.ltkj.LtkjApplication;import com.ltkj.framework.config.MatchUtils;
import com.ltkj.hosp.domain.TjJcycxm;
@@ -22,6 +23,9 @@
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
@@ -34,6 +38,8 @@
import java.io.File;
import java.io.IOException;
import static com.ltkj.framework.config.MatchUtils.getIdCardBirthDayStr;
import static com.ltkj.framework.config.MatchUtils.isIdCard;
/**
@@ -85,10 +91,37 @@
        public static void main(String[] args) throws Exception {
            String s = "62272219610528411X";
            System.out.println(isValidIdCard(s) ? "合法" : "非法");
            System.out.println(getBirthDayByIdCard(s));
        }
    public static String getBirthDayByIdCard(String idCard) throws Exception {
        if (!isIdCard(idCard)) {
            throw new Exception("身份证不正确");
        }
        // 获取身份证的出生年月日串
        String birth = getIdCardBirthDayStr(idCard);
        // 获取年月日
        int year = Integer.parseInt(birth.substring(0, 4));
        int month = Integer.parseInt(birth.substring(4, 6));
        int day = Integer.parseInt(birth.substring(6, 8));
        String sr = year + "-" + month + "-" + day;
        // 解析为 Date
        Date date = DateUtil.parse(sr, "yyyy-MM-dd");
        // 转换为 LocalDateTime
        LocalDateTime dateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        // 设置固定时分秒
        dateTime = dateTime.withHour(12).withMinute(34).withSecond(56);
        // 格式化为字符串返回
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return dateTime.format(formatter);
    }
    public static boolean isValidIdCard(String idCardNumber) {
        // 正则表达式,匹配身份证号码的格式
        String regex = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)";