如何计算一个人从出生日期的确切年龄在android
问题描述:
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;
}
答
尝试从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;
}
找到解决办法希望能帮助你!
答
从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());
希望它会解决你的问题。
答
随着乔达库:
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 ;
}
答
试试这个...
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;
}
答
使用下面的代码片段来计算年龄:
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));
}
}
兄弟我已经尝试过你的方法示例:我已经选择了10-01-1991 frm日历int month1 = now.get(Calendar.MONTH)并且我想在int month1中得到int = 1对吗?但我越来越int = 0,如果我在代码中的任何地方是错误的,那么请让我知道thanx提前。 –