一 获取年龄
首先要在实体类中定义年龄(age)和身份证号码(idcard)
//身份证号码
private String idcard;
public String getIdcard() {
return idcard;
}
public void setIdcard(String idcard) {
this.idcard = idcard;
}
//年龄
private Integer age;
public Integer getAge() {
return getAgeByIdcard(idcard);
}
public void setAge(String idcard) {
this.age = getAgeByIdcard(idcard);
}
然后通过身份证号码获取年龄
/**
* 根据身份证号获取年龄
* @param IDCard
* @return
*/
public static Integer getAgeByIdcard(String idcard){
Integer age = 0;
//获取当前时间
Calendar cal = Calendar.getInstance();
Date date = new Date();
//15位身份证号
if (idcard.length() == 15){
// 身份证上的年份(15位身份证为1980年前的)
String uyear = "19" + idcard.substring(6, 8);
// 身份证上的月份
String uyue = idcard.substring(8, 10);
// 当前年份
int fyear = cal.get(Calendar.YEAR);
// 当前月份
int fyue = cal.get(Calendar.MONTH) + 1;
if (Integer.parseInt(uyue) <= fyue) {
age = fyear - Integer.parseInt(uyear) + 1;
// 当前用户还没过生
} else {
age = fyear - Integer.parseInt(uyear);
}
//18位身份证号
}else if(idcard.length() == 18){
// 身份证上的年份
String year = idcard.substring(6).substring(0, 4);
// 身份证上的月份
String yue = idcard.substring(10).substring(0, 2);
// 当前年份
// 当前年份
int fyear = cal.get(Calendar.YEAR);
// 当前月份
int fyue = cal.get(Calendar.MONTH) + 1;
// 当前月份大于用户出身的月份表示已过生日
if (Integer.parseInt(yue) <= fyue) {
age = fyear - Integer.parseInt(year) + 1;
// 当前用户还没过生日
} else {
age = fyear - Integer.parseInt(year);
}
}
return age;
}
二 获取出生年月
首先要在实体类中定义出生年月(birthday)和身份证号码(idcard)
//出生年月
private String birthday;
public void setBirthday(String idcard) {
this.birthday = getBirthdayByIdcard(idcard);
}
public String getBirthday() {
return getBirthdayByIdcard(idcard);
}
//身份证号码
private String idcard;
public String getIdcard() {
return idcard;
}
public void setIdcard(String idcard) {
this.idcard = idcard;
}
通过身份证号码获取出生年月
/**
* 获取出生日期 yyyy/MM/dd
* @param idcard
* @return
*/
public static String getBirthdayByIdcard(String idcard){
String birthday="";
String year="";
String month="";
String day="";
//15位身份证号
if (idcard.length() == 15){
// 身份证上的年份(15位身份证为1980年前的)
year = "19" + idcard.substring(6, 8);
//身份证上的月份
month = idcard.substring(8, 10);
//身份证上的日期
day= idcard.substring(10, 12);
//18位身份证号
}else if(idcard.length() == 18){
// 身份证上的年份
year = idcard.substring(6).substring(0, 4);
// 身份证上的月份
month = idcard.substring(10).substring(0, 2);
//身份证上的日期
day=idcard.substring(12).substring(0,2);
}
birthday=year+"/"+month+"/"+day;
return birthday;
}