package com.oracle.core;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class IdCheck
{
public static void main(String[] args)
{
System.out.println("请输入一个身份证号:");
Scanner scanner=new Scanner(System.in);
String id = scanner.next();
char[] c = id.toCharArray();
String birthday = "";
for (int i = 6; i < 14; i++)
{
birthday += c[i];
}
System.out.println("出生日期:" + birthday);
char sex1 = id.charAt(16);
String sex2 = "".valueOf(sex1);
int sex = Integer.parseInt(sex2);
if (sex % 2 == 0)
{
System.out.println("性别:女性");
}
else
{
System.out.println("性别:男性");
}
// 生成现在的日历
Calendar now = Calendar.getInstance();
int now_year = now.get(Calendar.YEAR);
int now_month = now.get(Calendar.MONTH);
int now_day = now.get(Calendar.DAY_OF_YEAR);
// 根据出生日期生成一个日历
int year = Integer.parseInt(birthday.substring(0, 4));
int month = Integer.parseInt(birthday.substring(4, 6));
int day = Integer.parseInt(birthday.substring(6, 8));
Calendar born = Calendar.getInstance();
born.set(year, month - 1, day);
int born_year = born.get(Calendar.YEAR);
int born_month = born.get(Calendar.MONTH);
int born_day = born.get(Calendar.DAY_OF_YEAR);
int age = 0;
// 做比较
// 如果月份大于他的月份 说明已过生日,计算年龄
if (now_month > born_month)
{
System.out.println("您的生日已过");
age = (now_year - born_year);
// 把出生的年设为现在的年
born.set(Calendar.YEAR, now.get(Calendar.YEAR));
// 计算出生到现在过了多少天
int days = now_day - born_day;
Calendar live = new GregorianCalendar();
live.set(Calendar.MONTH, 0);
live.set(Calendar.DATE, 1);
live.add(Calendar.DAY_OF_YEAR, days);
System.out.println("您的年龄为" + age + "岁零" + live.get(Calendar.MONTH) + "月" + live.get(Calendar.DATE) + "天");
}
// 如果月份小于他的月份 生日未过,计算年龄
else if (now_month < born_month)
{
System.out.println("您的生日未过");
age = (now_year - born_year) - 1;
born.set(Calendar.YEAR, now.get(Calendar.YEAR));
int days = now_day - born_day;
Calendar live = new GregorianCalendar();
live.set(Calendar.MONTH, 0);
live.set(Calendar.DATE, 1);
live.add(Calendar.DAY_OF_YEAR, days);
System.out.println("您的年龄为" + (age) + "岁零" + live.get(Calendar.MONTH) + "月" + live.get(Calendar.DATE) + "天");
}
// 如果月份等于他的月份 未知 要分别判断
else
{
if(now_day>born_day)
{
System.out.println("您的生日已过");
age = (now_year - born_year) - 1;
born.set(Calendar.YEAR, now.get(Calendar.YEAR));
int days = now_day - born_day;
Calendar live = new GregorianCalendar();
live.set(Calendar.MONTH, 0);
live.set(Calendar.DATE, 1);
live.add(Calendar.DAY_OF_YEAR, days);
System.out.println("您的年龄为" + (age) + "岁零" + live.get(Calendar.MONTH) + "月" + live.get(Calendar.DATE) + "天");
}
else if(now_day<born_day)
{
System.out.println("您的生日未过");
age = (now_year - born_year) - 1;
born.set(Calendar.YEAR, now.get(Calendar.YEAR));
int days = now_day - born_day;
Calendar live = new GregorianCalendar();
live.set(Calendar.MONTH, 0);
live.set(Calendar.DATE, 1);
live.add(Calendar.DAY_OF_YEAR, days);
System.out.println("您的年龄为" + (age) + "岁零" + live.get(Calendar.MONTH) + "月" + live.get(Calendar.DATE) + "天");
}
else
{
System.out.println("您的生日是今天");
age = (now_year - born_year) - 1;
born.set(Calendar.YEAR, now.get(Calendar.YEAR));
int days = now_day - born_day;
Calendar live = new GregorianCalendar();
live.set(Calendar.MONTH, 0);
live.set(Calendar.DATE, 1);
live.add(Calendar.DAY_OF_YEAR, days);
System.out.println("您的年龄为" + (age) + "岁零" + live.get(Calendar.MONTH) + "月" + live.get(Calendar.DATE) + "天");
}
}
}
}
java Calendar类 根据身份证号获取出生日期、性别、生日是否已过、年龄
最新推荐文章于 2025-03-11 10:38:12 发布
本文介绍了一个Java程序,该程序能够从输入的身份证号码中解析出生日期和性别信息,并根据当前日期计算出精确到月和天的年龄。程序首先读取用户输入的身份证号,然后提取出生日期和性别字段,接着使用Java的Calendar类来计算年龄。
2518

被折叠的 条评论
为什么被折叠?



