forked from rongchao/epmet-cloud-rizhao
				
			
				 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