先判断号位数对:
static int getAge(String IDCardNum){
int year, month, day, idLength = IDCardNum.length();
Calendar cal1 = Calendar.getInstance();
Calendar today = Calendar.getInstance();
if(idLength == 18){
year = Integer.parseInt(IDCardNum.substring(6,10));
month = Integer.parseInt(IDCardNum.substring(10,12));
day = Integer.parseInt(IDCardNum.substring(12,14));
}
else if(idLength == 15){
year = Integer.parseInt(IDCardNum.substring(6,8)) + 1900;
month = Integer.parseInt(IDCardNum.substring(8,10));
day = Integer.parseInt(IDCardNum.substring(10,12));
}
else {
System.out.println("This ID card number is invalid!");
return -1;
}
cal1.set(year, month, day);
return getYearDiff(today, cal1);
}
static int getYearDiff(Calendar cal, Calendar cal1){
int m = (cal.get(cal.MONTH)) - (cal1.get(cal1.MONTH));
int y = (cal.get(cal.YEAR)) - (cal1.get(cal1.YEAR));
return (y * 12 + m)/12;
}
public static void main(String[] args){
System.out.println(getAge("222222196406043333"));
System.out.println(getAge("222222640604333"));
System.out.println(getAge("2222226406043333"));
}
import java.util.Calendar;
public class Test {
public static void main(String[] args) throws Exception{
int age=getAge("110110198412200017");
System.out.println(age);
}
public static int getAge(String id){
Calendar ca =Calendar.getInstance();
int nowYear= ca.get(Calendar.YEAR);
int nowMonth= ca.get(Calendar.MONTH)+1;
int len=id.length();
if(len==18){
int IDYear=Integer.parseInt(id.substring(6,10));
int IDMonth=Integer.parseInt(id.substring(10,12));
if((IDMonth-nowMonth)>0){
return nowYear-IDYear-1;
}
else
return nowYear-IDYear;
}
else
System.out.println("错误的身份证号");
return 0;
}
}