Расчет возраста Java по дате рождения с использованием календаря: несколько методов

Чтобы вычислить возраст по заданной дате рождения в 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, представляющий дату рождения. Методы вернут рассчитанный возраст.