2017-01-10 88 views
0
First example: birthdate :10-01-1991(ddmmyyyy) 
       CurrentDate :10-01-2017 

如果以上是条件,那么我想打印26作为当前的年龄。 第二个例子:出生日期:25-07-1991(ddmmyyyy)
当前日期:10-01-2017 如果上面是条件,那么我想打印25作为当前年龄。如何计算一个人从出生日期的确切年龄在android

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

下面是我试过的代码。

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; 

}

回答

0

尝试从here

private String getAge(int year, int month, int day){ 
    Calendar dob = Calendar.getInstance(); 
    Calendar today = Calendar.getInstance(); 

    dob.set(year, month, day); 

    int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR); 

    if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)){ 
     age--; 
    } 

    Integer ageInt = new Integer(age); 
    String ageS = ageInt.toString(); 

    return ageS; 
} 

找到解决办法希望能帮助你!

3

calculate age参考,使用周期类如下:

LocalDate today = LocalDate.now(); 
LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1); 

Period p = Period.between(birthday, today); 

//Now access the values as below 
System.out.println(period.getDays()); 
System.out.println(period.getMonths()); 
System.out.println(period.getYears()); 

希望它会解决你的问题。

5

随着乔达库:

LocalDate birthdate = new LocalDate (1970, 1, 20); 
LocalDate now = new LocalDate(); 
Years age = Years.yearsBetween(birthdate, now); 

没有图书馆:

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 ; 

}

+0

兄弟我已经尝试过你的方法示例:我已经选择了10-01-1991 frm日历int month1 = now.get(Calendar.MONTH)并且我想在int month1中得到int = 1对吗?但我越来越int = 0,如果我在代码中的任何地方是错误的,那么请让我知道thanx提前。 –

0

试试这个...

private String getAge(int year, int month, int day) { 
    //calculating age from dob 
    Calendar dob = Calendar.getInstance(); 
    Calendar today = Calendar.getInstance(); 
    dob.set(year, month, day); 
    int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR); 
    if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)) { 
     age--; 
    } 
    return age; 
} 
2

使用下面的代码片段来计算年龄:

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 

public class AgeCalculator { 

    public static int calculateAge(Date birthdate) { 
     Calendar birth = Calendar.getInstance(); 
     birth.setTime(birthdate); 
     Calendar today = Calendar.getInstance(); 

     int yearDifference = today.get(Calendar.YEAR) 
       - birth.get(Calendar.YEAR); 

     if (today.get(Calendar.MONTH) < birth.get(Calendar.MONTH)) { 
      yearDifference--; 
     } else { 
      if (today.get(Calendar.MONTH) == birth.get(Calendar.MONTH) 
        && today.get(Calendar.DAY_OF_MONTH) < birth 
          .get(Calendar.DAY_OF_MONTH)) { 
       yearDifference--; 
      } 

     } 

     return yearDifference; 
    } 

    public static void main(String[] args) throws ParseException { 
     // date format dd-mm-yyyy 
     String birthdateStr = "11-01-1991"; 
     SimpleDateFormat df = new SimpleDateFormat("dd-mm-yyyy"); 
     Date birthdate = df.parse(birthdateStr); 
     System.out.println(AgeCalculator.calculateAge(birthdate)); 

    } 
} 
相关问题