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