写一个java代码根据身份证获取出生年月日,性别,年龄
时间: 2023-03-29 21:03:25 浏览: 130
我很高兴回答这个问题。以下是Java代码,可以根据身份证获取出生年月日,性别和年龄:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class IDCardUtil {
/**
* 根据身份证号获取出生日期、性别和年龄
* @param idCard 身份证号
* @return 出生日期、性别和年龄
*/
public static String getBirthAndSexAndAge(String idCard) {
String result = "";
if (idCard != null && idCard.length() == 18) {
String birth = idCard.substring(6, 14);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
Date birthDate = sdf.parse(birth);
Calendar cal = Calendar.getInstance();
if (cal.before(birthDate)) {
throw new IllegalArgumentException("身份证号不正确");
}
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(birthDate);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH) + 1;
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
if (monthNow < monthBirth || (monthNow == monthBirth && dayOfMonthNow < dayOfMonthBirth)) {
age--;
}
String sex = "";
if (Integer.parseInt(idCard.substring(16, 17)) % 2 == ) {
sex = "女";
} else {
sex = "男";
}
result = "出生日期:" + birth.substring(, 4) + "年" + birth.substring(4, 6) + "月" + birth.substring(6) + "日,性别:" + sex + ",年龄:" + age + "岁";
} catch (ParseException e) {
e.printStackTrace();
}
}
return result;
}
}
```
使用方法:
```java
String idCard = "身份证号码";
String result = IDCardUtil.getBirthAndSexAndAge(idCard);
System.out.println(result);
```
其中,idCard 是要查询的身份证号码,result 是返回的结果,包括出生日期、性别和年龄。
阅读全文