如何从android出生日期算出一个人的确切年龄

0 java android

  First example: birthdate :10-01-1991(ddmmyyyy) 
                 CurrentDate :10-01-2017 
Run Code Online (Sandbox Code Playgroud)

如果上面是条件,那么我想打印26作为当前年龄.第二个例子:生日:25-07-1991(ddmmyyyy)
CurrentDate:10-01-2017 如果上面是条件那么我想打印25作为当前年龄.

请帮我 ....!!!!!!

以下是我尝试过的代码.

private int calculateage(Integer day1, Integer month1, Integer year1)
{
Calendar birthCal = new GregorianCalendar(1991, 01, 10);

Calendar nowCal = new GregorianCalendar();

age = nowCal.get(Calendar.YEAR) - birthCal.get(Calendar.YEAR);
boolean isMonthGreater = birthCal.get(Calendar.MONTH) >= nowCal
        .get(Calendar.MONTH);

boolean isMonthSameButDayGreater = birthCal.get(Calendar.MONTH) >= nowCal.get(Calendar.MONTH)
        && birthCal.get(Calendar.DAY_OF_MONTH) >= nowCal
                .get(Calendar.DAY_OF_MONTH);

if (age < 18) {
    Age = age;
}
else if (isMonthGreater || isMonthSameButDayGreater) {
    Age = age - 1;
}
return Age;
Run Code Online (Sandbox Code Playgroud)

}

sam*_*sad 7

与乔达图书馆:

LocalDate birthdate = new LocalDate (1970, 1, 20);
LocalDate now = new LocalDate();
Years age = Years.yearsBetween(birthdate, now);
Run Code Online (Sandbox Code Playgroud)

没有图书馆:

public static int getAge(String date) {

int age = 0;
try {
    Date date1 = dateFormat.parse(date);
    Calendar now = Calendar.getInstance();
    Calendar dob = Calendar.getInstance();
    dob.setTime(date1);
    if (dob.after(now)) {
        throw new IllegalArgumentException("Can't be born in the future");
    }
    int year1 = now.get(Calendar.YEAR);
    int year2 = dob.get(Calendar.YEAR);
    age = year1 - year2;
    int month1 = now.get(Calendar.MONTH);
    int month2 = dob.get(Calendar.MONTH);
    if (month2 > month1) {
        age--;
    } else if (month1 == month2) {
        int day1 = now.get(Calendar.DAY_OF_MONTH);
        int day2 = dob.get(Calendar.DAY_OF_MONTH);
        if (day2 > day1) {
            age--;
        }
    }
} catch (ParseException e) {
    e.printStackTrace();
}
return age ;
Run Code Online (Sandbox Code Playgroud)

}