获取方法如下
public static IdNumberConvert convertIdNumber(String idNumber){
if (StringUtils.isBlank(idNumber)){
throw new ServiceException("身份证号不能为空");
}
IdNumberConvert idNumberConvert = new IdNumberConvert();
idNumberConvert.setIdNumber(idNumber);
idNumberConvert.setSex(SexEnum.MAN);
try {
String year="";
String month="";
String day="";
if (idNumber.length() == 15){
if (Integer.parseInt(idNumber.substring(14, 15)) % 2 == 0) {
idNumberConvert.setSex(SexEnum.WOMAN);
}
year = "19" + idNumber.substring(6, 8);
month = idNumber.substring(8, 10);
day= idNumber.substring(10, 12);
}else if(idNumber.length() == 18){
if (Integer.parseInt(idNumber.substring(16).substring(0, 1)) % 2 == 0) {
idNumberConvert.setSex(SexEnum.WOMAN);
}
year = idNumber.substring(6,10);
month = idNumber.substring(10,12);
day = idNumber.substring(12, 14);
}
idNumberConvert.setBirthDay(LocalDateUtil.parseStringToLocalDate(year + "-" + month + "-" + day));
} catch (Exception e) {
throw new ServiceException("身份证号不合法");
}
return idNumberConvert;
}
实体类
@Data
public class IdNumberConvert {
private String idNumber;
private SexEnum sex;
private LocalDate birthDay;
}
性别枚举
@Getter
public enum SexEnum {
MAN(0, "男"),
WOMAN(1, "女");
private Integer value;
private String desc;
SexEnum(final int value, final String desc) {
this.value = value;
this.desc = desc;
}
}
日期格式转换
public static LocalDateTime parseStringToDateTime(String time) {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return LocalDateTime.parse(time, df);
}