通过身份证号输出出生年月日,现在的年龄以及性别的java实验收获
时间: 2024-06-09 09:07:54 浏览: 86
通过身份证号得到出生日期和性别的js代码
以下是一个 Java 实现的例子,利用身份证号码解析出生年月日、年龄和性别:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class IdCardParser {
public static void main(String[] args) {
String idCard = "44052419990101001X"; // 身份证号码
String birthday = idCard.substring(6, 14); // 生日,格式为 yyyyMMdd
String genderCode = idCard.substring(16, 17); // 性别码,奇数表示男性,偶数表示女性
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
Date birthDate = sdf.parse(birthday);
Calendar cal = Calendar.getInstance();
cal.setTime(birthDate);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
System.out.println("生日:" + year + "年" + month + "月" + day + "日");
int age = getAge(birthDate);
System.out.println("年龄:" + age + "岁");
String gender = getGender(genderCode);
System.out.println("性别:" + gender);
} catch (ParseException e) {
e.printStackTrace();
}
}
private static int getAge(Date birthDate) {
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--;
}
return age;
}
private static String getGender(String genderCode) {
int code = Integer.parseInt(genderCode);
return code % 2 == 1 ? "男" : "女";
}
}
```
输出结果为:
```
生日:1999年1月1日
年龄:23岁
性别:男
```
这个例子中,我们首先利用 `substring` 方法从身份证号码中提取出生日和性别码。然后使用 `SimpleDateFormat` 将生日字符串解析为日期对象,并通过 `Calendar` 类计算出出生年月日。接着使用 `getAge` 方法计算出当前年龄。最后使用 `getGender` 方法根据性别码判断性别。
阅读全文