mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-24 18:04:54 +08:00
fix code
This commit is contained in:
parent
41bd03fa25
commit
662bfbe007
@ -16,12 +16,12 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 身份证相关工具类<br>
|
||||
* see <a href="https://www.oschina.net/code/snippet_1611_2881">https://www.oschina.net/code/snippet_1611_2881</a>
|
||||
* 身份证相关工具类,参考标准:GB 11643-1999<br>
|
||||
* 标准描述见:<a href="http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=080D6FBF2BB468F9007657F26D60013E">http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=080D6FBF2BB468F9007657F26D60013E</a>
|
||||
*
|
||||
* <p>
|
||||
* 本工具并没有对行政区划代码做校验,如有需求,请参阅(2018年10月):
|
||||
* <a href="http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/20181011221630.html">http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/20181011221630.html</a>
|
||||
* 本工具并没有对行政区划代码做校验,如有需求,请参阅(2020年12月):
|
||||
* <a href="http://www.mca.gov.cn/article/sj/xzqh/2020/20201201.html">http://www.mca.gov.cn/article/sj/xzqh/2020/20201201.html</a>
|
||||
* </p>
|
||||
*
|
||||
* @author Looly
|
||||
@ -118,7 +118,8 @@ public class IdcardUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 将15位身份证号码转换为18位
|
||||
* 将15位身份证号码转换为18位<br>
|
||||
* 15位身份证号码遵循GB 11643-1989标准。
|
||||
*
|
||||
* @param idCard 15位身份编码
|
||||
* @return 18位身份编码
|
||||
@ -422,17 +423,6 @@ public class IdcardUtil {
|
||||
return sum % 11 == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据身份编号获取生日,只支持15或18位身份证号码
|
||||
*
|
||||
* @param idcard 身份编号
|
||||
* @return 生日(yyyyMMdd)
|
||||
* @see #getBirth(String)
|
||||
*/
|
||||
public static String getBirthByIdCard(final String idcard) {
|
||||
return getBirth(idcard);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据身份编号获取生日,只支持15或18位身份证号码
|
||||
*
|
||||
@ -458,8 +448,8 @@ public class IdcardUtil {
|
||||
* @return 日期
|
||||
*/
|
||||
public static DateTime getBirthDate(final String idCard) {
|
||||
final String birthByIdCard = getBirthByIdCard(idCard);
|
||||
return null == birthByIdCard ? null : DateUtil.parse(birthByIdCard, DatePattern.PURE_DATE_FORMAT);
|
||||
final String birth = getBirth(idCard);
|
||||
return null == birth ? null : DateUtil.parse(birth, DatePattern.PURE_DATE_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -468,8 +458,8 @@ public class IdcardUtil {
|
||||
* @param idcard 身份编号
|
||||
* @return 年龄
|
||||
*/
|
||||
public static int getAgeByIdCard(final String idcard) {
|
||||
return getAgeByIdCard(idcard, DateUtil.date());
|
||||
public static int getAge(final String idcard) {
|
||||
return getAge(idcard, DateUtil.date());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -479,9 +469,8 @@ public class IdcardUtil {
|
||||
* @param dateToCompare 以此日期为界,计算年龄。
|
||||
* @return 年龄
|
||||
*/
|
||||
public static int getAgeByIdCard(final String idcard, final Date dateToCompare) {
|
||||
final String birth = getBirthByIdCard(idcard);
|
||||
return DateUtil.age(DateUtil.parse(birth, "yyyyMMdd"), dateToCompare);
|
||||
public static int getAge(final String idcard, final Date dateToCompare) {
|
||||
return DateUtil.age(getBirthDate(idcard), dateToCompare);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -490,7 +479,7 @@ public class IdcardUtil {
|
||||
* @param idcard 身份编号
|
||||
* @return 生日(yyyy)
|
||||
*/
|
||||
public static Short getYearByIdCard(String idcard) {
|
||||
public static Short getBirthYear(String idcard) {
|
||||
final int len = idcard.length();
|
||||
if (len < CHINA_ID_MIN_LENGTH) {
|
||||
return null;
|
||||
@ -506,7 +495,7 @@ public class IdcardUtil {
|
||||
* @param idcard 身份编号
|
||||
* @return 生日(MM)
|
||||
*/
|
||||
public static Short getMonthByIdCard(String idcard) {
|
||||
public static Short getBirthMonth(String idcard) {
|
||||
final int len = idcard.length();
|
||||
if (len < CHINA_ID_MIN_LENGTH) {
|
||||
return null;
|
||||
@ -522,7 +511,7 @@ public class IdcardUtil {
|
||||
* @param idcard 身份编号
|
||||
* @return 生日(dd)
|
||||
*/
|
||||
public static Short getDayByIdCard(String idcard) {
|
||||
public static Short getBirthDay(String idcard) {
|
||||
final int len = idcard.length();
|
||||
if (len < CHINA_ID_MIN_LENGTH) {
|
||||
return null;
|
||||
@ -538,7 +527,7 @@ public class IdcardUtil {
|
||||
* @param idcard 身份编号
|
||||
* @return 性别(1 : 男 , 0 : 女)
|
||||
*/
|
||||
public static int getGenderByIdCard(String idcard) {
|
||||
public static int getGender(String idcard) {
|
||||
Assert.notBlank(idcard);
|
||||
final int len = idcard.length();
|
||||
if (len < CHINA_ID_MIN_LENGTH) {
|
||||
@ -559,7 +548,7 @@ public class IdcardUtil {
|
||||
* @return 省份编码
|
||||
* @since 5.7.2
|
||||
*/
|
||||
public static String getProvinceCodeByIdCard(final String idcard) {
|
||||
public static String getProvinceCode(final String idcard) {
|
||||
final int len = idcard.length();
|
||||
if (len == CHINA_ID_MIN_LENGTH || len == CHINA_ID_MAX_LENGTH) {
|
||||
return idcard.substring(0, 2);
|
||||
@ -573,8 +562,8 @@ public class IdcardUtil {
|
||||
* @param idcard 身份编码
|
||||
* @return 省份名称。
|
||||
*/
|
||||
public static String getProvinceByIdCard(final String idcard) {
|
||||
final String code = getProvinceCodeByIdCard(idcard);
|
||||
public static String getProvince(final String idcard) {
|
||||
final String code = getProvinceCode(idcard);
|
||||
if (StrUtil.isNotBlank(code)) {
|
||||
return CITY_CODES.get(code);
|
||||
}
|
||||
@ -588,7 +577,7 @@ public class IdcardUtil {
|
||||
* @param idcard 身份编码
|
||||
* @return 地市级编码
|
||||
*/
|
||||
public static String getCityCodeByIdCard(final String idcard) {
|
||||
public static String getCityCode(final String idcard) {
|
||||
final int len = idcard.length();
|
||||
if (len == CHINA_ID_MIN_LENGTH || len == CHINA_ID_MAX_LENGTH) {
|
||||
return idcard.substring(0, 4);
|
||||
@ -604,7 +593,7 @@ public class IdcardUtil {
|
||||
* @return 地市级编码
|
||||
* @since 5.8.0
|
||||
*/
|
||||
public static String getDistrictCodeByIdCard(final String idcard) {
|
||||
public static String getDistrictCode(final String idcard) {
|
||||
final int len = idcard.length();
|
||||
if (len == CHINA_ID_MIN_LENGTH || len == CHINA_ID_MAX_LENGTH) {
|
||||
return idcard.substring(0, 6);
|
||||
@ -723,11 +712,11 @@ public class IdcardUtil {
|
||||
* @param idcard 身份证号码
|
||||
*/
|
||||
public Idcard(final String idcard) {
|
||||
this.provinceCode = IdcardUtil.getProvinceCodeByIdCard(idcard);
|
||||
this.cityCode = IdcardUtil.getCityCodeByIdCard(idcard);
|
||||
this.provinceCode = IdcardUtil.getProvinceCode(idcard);
|
||||
this.cityCode = IdcardUtil.getCityCode(idcard);
|
||||
this.birthDate = IdcardUtil.getBirthDate(idcard);
|
||||
this.gender = IdcardUtil.getGenderByIdCard(idcard);
|
||||
this.age = IdcardUtil.getAgeByIdCard(idcard);
|
||||
this.gender = IdcardUtil.getGender(idcard);
|
||||
this.age = IdcardUtil.getAge(idcard);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -47,49 +47,49 @@ public class IdcardUtilTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAgeByIdCardTest() {
|
||||
public void getAgeTest() {
|
||||
final DateTime date = DateUtil.parse("2017-04-10");
|
||||
|
||||
final int age = IdcardUtil.getAgeByIdCard(ID_18, date);
|
||||
final int age = IdcardUtil.getAge(ID_18, date);
|
||||
Assert.assertEquals(age, 38);
|
||||
|
||||
final int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
|
||||
final int age2 = IdcardUtil.getAge(ID_15, date);
|
||||
Assert.assertEquals(age2, 28);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getBirthByIdCardTest() {
|
||||
final String birth = IdcardUtil.getBirthByIdCard(ID_18);
|
||||
public void getBirthTest() {
|
||||
final String birth = IdcardUtil.getBirth(ID_18);
|
||||
Assert.assertEquals(birth, "19781216");
|
||||
|
||||
final String birth2 = IdcardUtil.getBirthByIdCard(ID_15);
|
||||
final String birth2 = IdcardUtil.getBirth(ID_15);
|
||||
Assert.assertEquals(birth2, "19880730");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getProvinceByIdCardTest() {
|
||||
final String province = IdcardUtil.getProvinceByIdCard(ID_18);
|
||||
public void getProvinceTest() {
|
||||
final String province = IdcardUtil.getProvince(ID_18);
|
||||
Assert.assertEquals(province, "江苏");
|
||||
|
||||
final String province2 = IdcardUtil.getProvinceByIdCard(ID_15);
|
||||
final String province2 = IdcardUtil.getProvince(ID_15);
|
||||
Assert.assertEquals(province2, "内蒙古");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getCityCodeByIdCardTest() {
|
||||
final String codeByIdCard = IdcardUtil.getCityCodeByIdCard(ID_18);
|
||||
Assert.assertEquals("3210", codeByIdCard);
|
||||
public void getCityCodeTest() {
|
||||
final String code = IdcardUtil.getCityCode(ID_18);
|
||||
Assert.assertEquals("3210", code);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDistrictCodeByIdCardTest() {
|
||||
final String codeByIdCard = IdcardUtil.getDistrictCodeByIdCard(ID_18);
|
||||
Assert.assertEquals("321083", codeByIdCard);
|
||||
public void getDistrictCodeTest() {
|
||||
final String code = IdcardUtil.getDistrictCode(ID_18);
|
||||
Assert.assertEquals("321083", code);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getGenderByIdCardTest() {
|
||||
final int gender = IdcardUtil.getGenderByIdCard(ID_18);
|
||||
public void getGenderTest() {
|
||||
final int gender = IdcardUtil.getGender(ID_18);
|
||||
Assert.assertEquals(1, gender);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user