您的位置:首页 > 其它

根据出生年月日判断年龄

2016-04-06 11:11 218 查看
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/*实现步骤:
1、获取当前时间
2、判断出生日期是否小于当前时间,如果大于,则引发异常
3、从当前时间中取出年、月、日;从出生日期中取出年、月、日,年份相减
4、然后做具体判断
*/
public class Main {
public static void main(String[] args) {
try {
String str = "1993-8-22";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date birthdate = formatter.parse(str);
System.out.println(getAge(birthdate));
} catch (Exception e1) {
e1.printStackTrace();
}
}

public static int getAge(Date birthDay) throws Exception {
// 获取当前系统时间
Calendar cal = Calendar.getInstance();
// 如果出生日期大于当前时间,则抛出异常
if (cal.before(birthDay)) {
throw new IllegalArgumentException("The birthDay is before Now.It's unbelievable!");
}
// 取出系统当前时间的年、月、日部分
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH);
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);

// 将日期设置为出生日期
cal.setTime(birthDay);
// 取出出生日期的年、月、日部分
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH);
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
// 当前年份与出生年份相减,初步计算年龄
int age = yearNow - yearBirth;
// 当前月份与出生日期的月份相比,如果月份小于出生月份,则年龄上减1,表示不满多少周岁
if (monthNow <= monthBirth) {
// 如果月份相等,在比较日期,如果当前日,小于出生日,也减1,表示不满多少周岁
if (monthNow == monthBirth) {
if (dayOfMonthNow < dayOfMonthBirth)
age--;
} else {
age--;
}
}
System.out.println("age:" + age);
return age;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: