原帖:这里
根据自己需要改了改。
根据生日计算年龄可以通过Calendar实现。最简单可以考虑get(Calendar.DAY_OF_YEAR)来简单修正年龄,但是遇到生日在闰年的2月29之后,或者今年是闰年的2月29之后可能出现计算不准,误差一天。所以还是老实判断年月日好了。
/**
* 根据出生日期计算年龄
*
* @param birthDay
* @return 未来日期返回0
* @throws Exception
*/
public static int getAge(Date birthDay) throws Exception {
Calendar cal = Calendar.getInstance();
if (cal.before(birthDay)) {
return 0;
}
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;
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
if (dayOfMonthNow < dayOfMonthBirth) {
age--;
}
} else {
age--;
}
}
return age;
}
/**
* 根据出生日期计算年龄
*
* @param strBirthDay
* 字符串型日期
* @param format
* 日期格式
* @return 未来日期返回0
* @throws Exception
*/
public static int getAge(String strBirthDay, String format)
throws Exception {
DateFormat df = new SimpleDateFormat(format);
Date birthDay = df.parse(strBirthDay);
return getAge(birthDay);
}