一、根據身份證號提取年齡
根據身份證號,可以提取出生年月日,通過當前日期計算年齡。
提取出生年月日:
public static String getBirthByIDCard(String idCard) {
if (idCard.length() == 18) {
return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
} else if (idCard.length() == 15) {
return "19" + idCard.substring(6, 8) + "-" + idCard.substring(8, 10) + "-" + idCard.substring(10, 12);
} else {
return "";
}
}
計算年齡:
public static int getAgeByIDCard(String idCard) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar dob = Calendar.getInstance();
dob.setTime(sdf.parse(getBirthByIDCard(idCard)));
Calendar today = Calendar.getInstance();
int year = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
int month = today.get(Calendar.MONTH) - dob.get(Calendar.MONTH);
int day = today.get(Calendar.DAY_OF_MONTH) - dob.get(Calendar.DAY_OF_MONTH);
if (month < 0 || (month == 0 && day < 0)) {
year--;
}
return year;
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
}
二、根據身份證號提取出生日期
根據身份證號可以提取出生日期,根據身份證號的長度不同,提取出生日期的方式也不同。
身份證號為15位:
public static String getBirthByIDCard(String idCard) {
if (idCard.length() == 15) {
return "19" + idCard.substring(6, 8) + "-" + idCard.substring(8, 10) + "-" + idCard.substring(10, 12);
} else {
return "";
}
}
身份證號為18位:
public static String getBirthByIDCard(String idCard) {
if (idCard.length() == 18) {
return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
} else {
return "";
}
}
三、根據身份證號如何查身份證有效期
身份證的有效期是從領證之日起計算的,以10年為一個周期,每個周期內的1、6月份是身份證的有效期截止日期,例如領證日期為:2008年10月1日,那麼該身份證的有效期截止日期為:2018年10月1日。
public static String getIDCardValidDate(String idCard) {
if (idCard.length() == 18) {
String year = idCard.substring(6, 10);
String month = idCard.substring(10, 12);
String day = idCard.substring(12, 14);
int age = Integer.parseInt(getAgeByIDCard(idCard));
int validYear = Integer.parseInt(year) + age + (age >= 18 && age % 10 < Integer.parseInt(year.substring(2)) ? 10 : 0);
return validYear + "-" + month + "-" + day;
} else {
return "";
}
}
四、根據身份證號碼提取年齡
與“根據身份證號提取年齡”相同。
五、根據身份證號查詢車票
根據身份證號查詢車票通常用於火車站、長途汽車站等場所,通過身份證號查詢該人是否已買了車票以及車票的信息。
public static String getTicketInfoByIDCard(String idCard) {
// TODO
}
六、根據身份證號提取性別
根據身份證號可以提取性別,身份證號的倒數第2位為奇數代表男性,偶數代表女性。
public static String getGenderByIDCard(String idCard) {
if (idCard.length() == 18) {
int genderCode = Integer.parseInt(idCard.substring(16, 17));
if (genderCode % 2 == 0) {
return "女";
} else {
return "男";
}
} else {
return "";
}
}
七、根據身份證號碼查詢個人信息
根據身份證號可以查詢個人信息,如:姓名、出生年月、性別、籍貫等。
public static String getPersonInfoByIDCard(String idCard) {
// TODO
}
八、根據身份證號計算年齡的公式
年齡的計算可以用以下公式:
年齡 = 當前年份 – 出生年份 -1 (到生日那年) + 出生年份所在世紀年份的增量
出生年份所在世紀年份的增量是指,每過一個世紀,這個增量就要加1。
public static int calculateAge(String birthDateStr) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar dob = Calendar.getInstance();
dob.setTime(sdf.parse(birthDateStr));
Calendar today = Calendar.getInstance();
int year = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)) {
year--;
}
int century = Integer.parseInt(birthDateStr.substring(0, 2));
int increment = (century - 19) / 4;
return year - increment;
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
}
九、根據身份證查手機號
根據身份證查手機號通常用於實名認證,通過身份證號查詢該人的手機號。
public static String getMobileByIDCard(String idCard) {
// TODO
}
十、根據身份證號碼提取出生年月
與“根據身份證號提取出生日期”相同。
原創文章,作者:KSDI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/148335.html