wg-basic/basic-util/src/main/java/ink/wgink/util/IdCardUtil.java
2022-05-31 14:57:20 +08:00

98 lines
2.4 KiB
Java

package ink.wgink.util;
import ink.wgink.exceptions.ParamsException;
import org.joda.time.DateTime;
/**
* @ClassName: IdCardUtil
* @Description: 身份证工具
* @Author: wanggeng
* @Date: 2022/5/20 22:39
* @Version: 1.0
*/
public class IdCardUtil {
/**
* 获得生日
*
* @param idCard
* @return
*/
public static String getBirth(String idCard) {
if (!RegexUtil.isIdentity(idCard)) {
throw new ParamsException("身份证格式错误");
}
return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
}
/**
* 获取性别
*
* @param idCard
* @return
*/
public static Integer getSexNumber(String idCard) {
if (!RegexUtil.isIdentity(idCard)) {
throw new ParamsException("身份证格式错误");
}
return Integer.parseInt(idCard.substring(16, 17));
}
/**
* 获取性别
*
* @param idCard
* @return
*/
public static String getSexName(String idCard) {
int sexNumber = getSexNumber(idCard);
if (sexNumber % 2 == 0) {
return "";
} else {
return "";
}
}
/**
* 获得年龄
*
* @param idCard
* @return
*/
public static Integer getAge(String idCard) {
int birthYear = Integer.parseInt(idCard.substring(6, 10));
int birthMonth = Integer.parseInt(idCard.substring(10, 12));
int birthDay = Integer.parseInt(idCard.substring(12, 14));
DateTime now = DateTime.now();
int year = now.getYear();
int month = now.getMonthOfYear();
int day = now.getDayOfMonth();
int age = year - birthYear;
if (month < birthMonth) {
return age - 1;
} else if (month == birthMonth && day < birthDay) {
return age - 1;
}
return age;
}
/**
* 身份证脱敏
*
* @param idCard
* @return
*/
public static String removeSensitive(String idCard) {
if (!RegexUtil.isIdentity(idCard)) {
throw new ParamsException("身份证格式错误");
}
if (idCard.length() == 15) {
return idCard.replaceAll("(\\w{6})\\w*(\\w{3})", "$1******$2");
}
return idCard.replaceAll("(\\w{6})\\w*(\\w{3})", "$1*********$2");
}
}