| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package com.ruoyi.common.utils;
-
- import java.util.Calendar;
- import java.util.HashMap;
- import java.util.Map;
-
- /**
- * @author wangqiong
- * @description 根据身份证号提取有效信息
- * @date 2023-12-11 11:45
- */
- public class IdCardUtils {
- /**
- * 通过身份证号码获取出生日期、性别、年龄
- * @param certificateNo
- * @return 返回的出生日期格式:1990-01-01 性别格式:1-女,0-男
- */
- public static Map<String, String> getBirAgeSex(String certificateNo) {
- String birthday = "";
- String age = "";
- String sexCode = "";
-
- int year = Calendar.getInstance().get(Calendar.YEAR);
- char[] number = certificateNo.toCharArray();
- boolean flag = true;
- if (number.length == 15) {
- for (int x = 0; x < number.length; x++) {
- if (!flag) return new HashMap<String, String>();
- flag = Character.isDigit(number[x]);
- }
- } else if (number.length == 18) {
- for (int x = 0; x < number.length - 1; x++) {
- if (!flag) return new HashMap<String, String>();
- flag = Character.isDigit(number[x]);
- }
- }
- if (flag && certificateNo.length() == 15) {
- birthday = "19" + certificateNo.substring(6, 8) + "-"
- + certificateNo.substring(8, 10) + "-"
- + certificateNo.substring(10, 12);
- sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length())) % 2 == 0 ? "1" : "0";
- age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8))) + "";
- } else if (flag && certificateNo.length() == 18) {
- birthday = certificateNo.substring(6, 10) + "-"
- + certificateNo.substring(10, 12) + "-"
- + certificateNo.substring(12, 14);
- sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? "1" : "0";
- age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";
- }
- Map<String, String> map = new HashMap<String, String>();
- map.put("birthday", birthday);
- map.put("age", age);
- map.put("sexCode", sexCode);
- return map;
- }
-
- }
|