/**
* 根据身份证的号码算出当前身份证持有者的性别和年龄
* @return
* @throws Exception
*/
public static Map<String, String> getCardInfo(String cardNum)
throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Calendar today = Calendar.getInstance(); // 存今天
Calendar birth = Calendar.getInstance(); // 存生日
// 定义身份证年月日,性别
String cardMonth = "",cardDay = "",sex = "";
// 年龄
int age = 0;
// 身份证长度
int length = cardNum.length();
if (length == 18) {
birth.setTime(format.parse(cardNum.substring(6, 14)));
age = today.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
cardMonth = birth.get(Calendar.MONTH) + 1 + "";
cardDay = birth.get(Calendar.DATE) + "";
birth.set(Calendar.YEAR, today.get(Calendar.YEAR)); // 修改为本年
if (birth.get(Calendar.DAY_OF_YEAR) <= today.get(Calendar.DAY_OF_YEAR)) {
age++;
}
// 判断性别
if (Integer.parseInt(cardNum.substring(16,17)) % 2 == 0) {
sex = "2"; // 女
} else {
sex = "1"; // 男
}
} else if (length == 15) {
birth.setTime(format.parse("19" + cardNum.substring(6, 12)));
age = today.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
cardMonth = birth.get(Calendar.MONTH) + 1 + "";
cardDay = birth.get(Calendar.DATE) + "";
birth.set(Calendar.YEAR, today.get(Calendar.YEAR)); // 修改为本年
if (birth.get(Calendar.DAY_OF_YEAR) <= today.get(Calendar.DAY_OF_YEAR)) {
age++;
}
// 判断性别
if (Integer.parseInt(cardNum.substring(14, 15)) % 2 == 0) {
sex = "2"; // 女
} else {
sex = "1"; // 男
}
}
Map<String, String> map = new HashMap<String, String>();
map.put("sex", sex);
map.put("age", age + "");
if (cardMonth.length() == 1) {
cardMonth = "0" + cardMonth;
}
map.put("birthday", cardMonth + "-" + cardDay);
return map;
}
根据身份证的号码算出持有者的性别和年龄
最新推荐文章于 2023-09-27 19:48:07 发布