Рубрики
Без рубрики

Рассчитать возраст в Java

Узнайте, как легко рассчитать возраст в Java 7, Java 8 и с помощью Joda-Time

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы увидим, как рассчитать возраст с помощью библиотек Java 8, Java 7 и Joda-Time.

Во всех случаях мы будем использовать дату рождения и текущую дату в качестве входных данных и возвращать расчетный возраст в годах.

2. Использование Java 8

Java 8 представила новый API даты и времени для работы с датами и временем, в основном основанный на библиотеке времени Joda.

В Java 8 мы можем использовать java.time.LocalDate для нашей даты рождения и текущей даты, а затем используйте Период для расчета их разницы в годах:

public int calculateAge(
  LocalDate birthDate,
  LocalDate currentDate) {
    // validate inputs ...
    return Period.between(birthDate, currentDate).getYears();
}

LocalDate полезен здесь, потому что представляет только дату, по сравнению с классом Java Date , который представляет как дату, так и время. LocalDate.now() может дать нам текущую дату.

И Период полезен, когда нам нужно подумать о временных периодах в годах, месяцах и днях.

Если бы мы хотели получить более точный возраст, скажем, в секундах , то мы бы хотели взглянуть на LocalDateTime и Duration соответственно (и, возможно, вместо этого вернуть long ).

3. Использование Joda-Времени

Если Java 8 не является вариантом, мы все равно можем получить тот же результат от Joda-Time , де-факто стандарта для операций с датой и временем в мире до Java 8.

Нам нужно добавить зависимость Joda-Time в наш pom:


  joda-time
  joda-time
  2.10

И тогда мы можем написать аналогичный метод для вычисления возраста, на этот раз используя Локальные данные и Годы из Joda-Time :

public int calculateAgeWithJodaTime(
  org.joda.time.LocalDate birthDate,
  org.joda.time.LocalDate currentDate) {
    // validate inputs ...
    Years age = Years.yearsBetween(birthDate, currentDate);
    return age.getYears();   
}

4. Использование Java 7

Без выделенного API в Java 7 нам остается свернуть свой собственный, и поэтому существует довольно много подходов.

В качестве одного из примеров мы можем использовать java.util.Дата :

public int calculateAgeWithJava7(
  Date birthDate, 
  Date currentDate) {            
    // validate inputs ...                                                                               
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd");                           
    int d1 = Integer.parseInt(formatter.format(birthDate));                            
    int d2 = Integer.parseInt(formatter.format(currentDate));                          
    int age = (d2 - d1) / 10000;                                                       
    return age;                                                                        
}

Здесь мы преобразуем заданную дату рождения и текущие данные объекты в целые числа и находим разницу между ними, и пока мы все еще не находимся на Java 7 через 8000 лет , этот подход должен работать до тех пор.

5. Заключение

В этой статье мы показали вам, как легко вычислить возраст с помощью библиотек Java 8, Java 7 и Joda-Time.

Чтобы узнать больше о поддержке времени передачи данных Java 8, ознакомьтесь с нашим введением даты и времени Java 8 .

И, как всегда, полный код для этих фрагментов можно найти на GitHub .