Чтобы вычислить возраст по заданной дате рождения в Java с помощью класса Calendar, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: использование Calendarи java.util.Date
import java.util.Calendar;
import java.util.Date;
public class AgeCalculator {
public static int calculateAge(Date dateOfBirth) {
Calendar dob = Calendar.getInstance();
dob.setTime(dateOfBirth);
Calendar today = Calendar.getInstance();
int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (today.get(Calendar.MONTH) < dob.get(Calendar.MONTH)) {
age--;
} else if (today.get(Calendar.MONTH) == dob.get(Calendar.MONTH)
&& today.get(Calendar.DAY_OF_MONTH) < dob.get(Calendar.DAY_OF_MONTH)) {
age--;
}
return age;
}
}
Метод 2: использование пакета java.timeJava 8
import java.time.LocalDate;
import java.time.Period;
import java.util.Date;
public class AgeCalculator {
public static int calculateAge(Date dateOfBirth) {
LocalDate dob = LocalDate.ofInstant(dateOfBirth.toInstant(), ZoneId.systemDefault());
LocalDate now = LocalDate.now();
Period period = Period.between(dob, now);
return period.getYears();
}
}
Метод 3: использование java.util.Calendarи java.util.GregorianCalendar
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;
public class AgeCalculator {
public static int calculateAge(Date dateOfBirth) {
Calendar dob = new GregorianCalendar();
dob.setTime(dateOfBirth);
Calendar today = new GregorianCalendar();
int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (today.get(Calendar.MONTH) < dob.get(Calendar.MONTH)) {
age--;
} else if (today.get(Calendar.MONTH) == dob.get(Calendar.MONTH)
&& today.get(Calendar.DAY_OF_MONTH) < dob.get(Calendar.DAY_OF_MONTH)) {
age--;
}
return age;
}
}
Все вышеперечисленные методы можно использовать, вызвав метод calculateAgeи передав объект Date, представляющий дату рождения. Методы вернут рассчитанный возраст.