mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-07 22:27:59 +08:00
IdcardUtil 新增对新版外国人永久居留身份证(18位)的支持
政策文件:https://www.nia.gov.cn/20231013/2.pdf
This commit is contained in:
parent
97577d7dd2
commit
483f7df1dd
@ -278,8 +278,8 @@ public class IdcardUtil {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 省份
|
// 截取省份代码。新版外国人永久居留身份证以9开头,第二三位是受理地代码
|
||||||
final String proCode = idcard.substring(0, 2);
|
final String proCode = idcard.startsWith("9") ? idcard.substring(1, 3): idcard.substring(0, 2);
|
||||||
if (null == CITY_CODES.get(proCode)) {
|
if (null == CITY_CODES.get(proCode)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,10 @@ import org.junit.Test;
|
|||||||
public class IdcardUtilTest {
|
public class IdcardUtilTest {
|
||||||
|
|
||||||
private static final String ID_18 = "321083197812162119";
|
private static final String ID_18 = "321083197812162119";
|
||||||
|
/**
|
||||||
|
* 新版外国人永久居留身份证号码
|
||||||
|
*/
|
||||||
|
private static final String FOREIGN_ID_18 = "932682198501010017";
|
||||||
private static final String ID_15 = "150102880730303";
|
private static final String ID_15 = "150102880730303";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -24,6 +28,8 @@ public class IdcardUtilTest {
|
|||||||
boolean valid15 = IdcardUtil.isValidCard(ID_15);
|
boolean valid15 = IdcardUtil.isValidCard(ID_15);
|
||||||
Assert.assertTrue(valid15);
|
Assert.assertTrue(valid15);
|
||||||
|
|
||||||
|
Assert.assertTrue(IdcardUtil.isValidCard(FOREIGN_ID_18));
|
||||||
|
|
||||||
// 无效
|
// 无效
|
||||||
String idCard = "360198910283844";
|
String idCard = "360198910283844";
|
||||||
Assert.assertFalse(IdcardUtil.isValidCard(idCard));
|
Assert.assertFalse(IdcardUtil.isValidCard(idCard));
|
||||||
@ -58,6 +64,7 @@ public class IdcardUtilTest {
|
|||||||
|
|
||||||
int age = IdcardUtil.getAgeByIdCard(ID_18, date);
|
int age = IdcardUtil.getAgeByIdCard(ID_18, date);
|
||||||
Assert.assertEquals(age, 38);
|
Assert.assertEquals(age, 38);
|
||||||
|
Assert.assertEquals(IdcardUtil.getAgeByIdCard(FOREIGN_ID_18, date), 32);
|
||||||
|
|
||||||
int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
|
int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
|
||||||
Assert.assertEquals(age2, 28);
|
Assert.assertEquals(age2, 28);
|
||||||
@ -127,6 +134,10 @@ public class IdcardUtilTest {
|
|||||||
// 台湾人在大陆身份证
|
// 台湾人在大陆身份证
|
||||||
isValidCard18 = IdcardUtil.isValidCard18("830000200209060065");
|
isValidCard18 = IdcardUtil.isValidCard18("830000200209060065");
|
||||||
Assert.assertTrue(isValidCard18);
|
Assert.assertTrue(isValidCard18);
|
||||||
|
|
||||||
|
// 新版外国人永久居留身份证
|
||||||
|
isValidCard18 = IdcardUtil.isValidCard18("932682198501010017");
|
||||||
|
Assert.assertTrue(isValidCard18);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user