2 changed files with 147 additions and 0 deletions
@ -0,0 +1,132 @@ |
|||||
|
package com.epmet.commons.tools.utils; |
||||
|
|
||||
|
import com.epmet.commons.tools.enums.GenderEnum; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
|
||||
|
import java.text.SimpleDateFormat; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @Description |
||||
|
* @Author zhaoqifeng |
||||
|
* @Date 2022/6/13 17:53 |
||||
|
*/ |
||||
|
public class IDCardUtil { |
||||
|
/** |
||||
|
* 15位身份证号 |
||||
|
*/ |
||||
|
private static final Integer FIFTEEN_ID_CARD=15; |
||||
|
/** |
||||
|
* 18位身份证号 |
||||
|
*/ |
||||
|
private static final Integer EIGHTEEN_ID_CARD=18; |
||||
|
private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
||||
|
|
||||
|
/** |
||||
|
* 根据身份证号获取性别 |
||||
|
* @param idCard |
||||
|
* @return |
||||
|
*/ |
||||
|
public static String getSex(String idCard){ |
||||
|
String sex =""; |
||||
|
if (StringUtils.isNotBlank(idCard)){ |
||||
|
//15位身份证号
|
||||
|
if (idCard.length() == FIFTEEN_ID_CARD){ |
||||
|
if (Integer.parseInt(idCard.substring(14, 15)) % 2 == 0) { |
||||
|
sex = GenderEnum.WOMAN.getCode(); |
||||
|
} else { |
||||
|
sex = GenderEnum.MAN.getCode(); |
||||
|
} |
||||
|
//18位身份证号
|
||||
|
}else if(idCard.length() == EIGHTEEN_ID_CARD){ |
||||
|
// 判断性别
|
||||
|
if (Integer.parseInt(idCard.substring(16).substring(0, 1)) % 2 == 0) { |
||||
|
sex = GenderEnum.WOMAN.getCode(); |
||||
|
} else { |
||||
|
sex = GenderEnum.MAN.getCode(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return sex; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 根据身份证号获取年龄 |
||||
|
* @param idCard |
||||
|
* @return |
||||
|
*/ |
||||
|
public static Integer getAge(String idCard){ |
||||
|
int age = 0; |
||||
|
Date date = new Date(); |
||||
|
if (StringUtils.isNotBlank(idCard)){ |
||||
|
//15位身份证号
|
||||
|
if (idCard.length() == FIFTEEN_ID_CARD){ |
||||
|
// 身份证上的年份(15位身份证为1980年前的)
|
||||
|
String uyear = "19" + idCard.substring(6, 8); |
||||
|
// 身份证上的月份
|
||||
|
String uyue = idCard.substring(8, 10); |
||||
|
// 当前年份
|
||||
|
String fyear = format.format(date).substring(0, 4); |
||||
|
// 当前月份
|
||||
|
String fyue = format.format(date).substring(5, 7); |
||||
|
if (Integer.parseInt(uyue) <= Integer.parseInt(fyue)) { |
||||
|
age = Integer.parseInt(fyear) - Integer.parseInt(uyear) + 1; |
||||
|
// 当前用户还没过生
|
||||
|
} else { |
||||
|
age = Integer.parseInt(fyear) - Integer.parseInt(uyear); |
||||
|
} |
||||
|
//18位身份证号
|
||||
|
}else if(idCard.length() == EIGHTEEN_ID_CARD){ |
||||
|
// 身份证上的年份
|
||||
|
String year = idCard.substring(6).substring(0, 4); |
||||
|
// 身份证上的月份
|
||||
|
String yue = idCard.substring(10).substring(0, 2); |
||||
|
// 当前年份
|
||||
|
String fyear = format.format(date).substring(0, 4); |
||||
|
// 当前月份
|
||||
|
String fyue = format.format(date).substring(5, 7); |
||||
|
// 当前月份大于用户出身的月份表示已过生日
|
||||
|
if (Integer.parseInt(yue) <= Integer.parseInt(fyue)) { |
||||
|
age = Integer.parseInt(fyear) - Integer.parseInt(year) + 1; |
||||
|
// 当前用户还没过生日
|
||||
|
} else { |
||||
|
age = Integer.parseInt(fyear) - Integer.parseInt(year); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return age; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取出生日期 yyyy年MM月dd日 |
||||
|
* @param idCard |
||||
|
* @return |
||||
|
*/ |
||||
|
public static String getBirthday(String idCard){ |
||||
|
String birthday=""; |
||||
|
String year=""; |
||||
|
String month=""; |
||||
|
String day=""; |
||||
|
if (StringUtils.isNotBlank(idCard)){ |
||||
|
//15位身份证号
|
||||
|
if (idCard.length() == FIFTEEN_ID_CARD){ |
||||
|
// 身份证上的年份(15位身份证为1980年前的)
|
||||
|
year = "19" + idCard.substring(6, 8); |
||||
|
//身份证上的月份
|
||||
|
month = idCard.substring(8, 10); |
||||
|
//身份证上的日期
|
||||
|
day= idCard.substring(10, 12); |
||||
|
//18位身份证号
|
||||
|
}else if(idCard.length() == EIGHTEEN_ID_CARD){ |
||||
|
// 身份证上的年份
|
||||
|
year = idCard.substring(6).substring(0, 4); |
||||
|
// 身份证上的月份
|
||||
|
month = idCard.substring(10).substring(0, 2); |
||||
|
//身份证上的日期
|
||||
|
day=idCard.substring(12).substring(0,2); |
||||
|
} |
||||
|
birthday=year+"-"+month+"-"+day; |
||||
|
} |
||||
|
return birthday; |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue