根据身份证号计算年龄(周岁)
/**
* 根据身份证号计算年龄(周岁)
*
* @param idCard 身份证号
* @return 年龄
*/
public Integer calculateAgeByIdCard(String idCard) {
//截取身份证中出生日期中的年、月、日
int personYear = Integer.parseInt(idCard.substring(6, 10));
int personMonth = Integer.parseInt(idCard.substring(10, 12));
int personDay = Integer.parseInt(idCard.substring(12, 14));
Calendar cal = Calendar.getInstance();
// 得到当前时间的年、月、日
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayNow = cal.get(Calendar.DATE);
// 用当前年月日减去生日年月日
int yearMinus = yearNow - personYear;
int monthMinus = monthNow - personMonth;
int dayMinus = dayNow - personDay;
//出生月份小于当前月份时,还没满周岁
if (monthMinus < 0) {
return yearMinus - 1;
}
//当前月份为出生月份时,并且出生日期小于当前月份时,没满周岁
if (monthMinus == 0 && dayMinus < 0) {
return yearMinus - 1;
}
return yearMinus;
}