1. 程式人生 > >java根據使用者生日計算年齡

java根據使用者生日計算年齡

/**
 * 根據使用者生日計算年齡
 */
public static int getAgeByBirthday(Date birthday) {
	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) + 1;
	int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);

	cal.setTime(birthday);
	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) {
		if (monthNow == monthBirth) {
			// monthNow==monthBirth 
			if (dayOfMonthNow < dayOfMonthBirth) {
				age--;
			}
		} else {
			// monthNow>monthBirth 
			age--;
		}
	}
	return age;
}