Как вычислить возраст по дате рождения
Короткий ответ
Period.between() от даты рождения до сегодняшнего дня даёт полное число лет. В примере «сегодня» зафиксировано, чтобы результат был одинаковым:
void main() {
var birthday = LocalDate.of(1990, 7, 15);
var today = LocalDate.of(2026, 3, 8);
IO.println(Period.between(birthday, today).getYears());
}Результат:
35В реальном коде используйте LocalDate.now().
Через ChronoUnit
ChronoUnit.YEARS.between() возвращает то же самое одним числом:
void main() {
var birthday = LocalDate.of(1990, 7, 15);
IO.println(ChronoUnit.YEARS.between(birthday, LocalDate.of(2026, 7, 14)));
IO.println(ChronoUnit.YEARS.between(birthday, LocalDate.of(2026, 7, 15)));
}Результат:
35
36Возраст полностью
Period хранит и месяцы с днями:
void main() {
var age = Period.between(LocalDate.of(2024, 1, 20), LocalDate.of(2026, 3, 8));
IO.println(age.getYears() + " y " + age.getMonths() + " m " + age.getDays() + " d");
}Результат:
2 y 1 m 16 dЧастая ошибка
Вычитать годы: 2026 - 1990. Если день рождения в этом году ещё не наступил, возраст получается на год больше:
void main() {
var birthday = LocalDate.of(1990, 7, 15);
var today = LocalDate.of(2026, 3, 8);
IO.println(today.getYear() - birthday.getYear());
IO.println(Period.between(birthday, today).getYears());
}Результат:
36
35Функции из этого ответа
- Period — Календарный промежуток в годах, месяцах и днях — например, возраст.
- ChronoUnit.between() — Считает количество целых единиц (дней, месяцев, часов) между двумя датами или моментами.
- LocalDate.now() — Возвращает сегодняшнюю дату по часам и часовому поясу компьютера.