/**
* 计算 年龄
*
* @param birthDate 生日
* @return 岁数 当 生日 大于 当前时间时,返回 -1
*/
public static int getAge(Date birthDate) {
// 当前日历
Calendar nowCalendar = Calendar.getInstance();
// 生日大于当前日期
if (nowCalendar.before(birthDate)) {
return -1;
}
// 当前年月日
int yearNow = nowCalendar.get(Calendar.YEAR);
int monthNow = nowCalendar.get(Calendar.MONTH);
int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);
// 出生日期年月日
Calendar birthCalendar = Calendar.getInstance();
birthCalendar.setTime(birthDate);
int yearBirth = birthCalendar.get(Calendar.YEAR);
int monthBirth = birthCalendar.get(Calendar.MONTH);
int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
// 粗计算年龄
int age = yearNow - yearBirth;
// 当前月份小于出生月份年龄减一
if (monthNow < monthBirth) {
age--;
}
// 当前月份等于出生月份,日小于生日年龄减一
else if (monthNow == monthBirth && dayNow < dayBirth) {
age--;
}
// 返回年龄值
return age;
}