Расчет возраста двух LocalDates - PullRequest
0 голосов
/ 27 мая 2020

Код:

 public String Calcage(){
    int age = 0;
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

        Date birth = sdf.parse(dateOfBirth);
        Date d = new Date();

        LocalDate birthday = birth.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate now = d.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

         age = Period.between(birthday, now).getYears();
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return String.valueOf(age);
}

ПРОБЛЕМА: Каждый раз возвращает ноль. Дата, которую я использую для тестирования: 1985-01-07

1 Ответ

1 голос
/ 27 мая 2020

Если вы действительно используете 1985-01-07, он правильно возвращает 0, а также должен генерировать исключение ParseException, которое будет перехвачено из блока catch, и будет напечатана трассировка стека. Ваш код должен работать на 07.01.1985 и возвращать 35. Если вы все же хотите использовать 1985-01-07, вы должны изменить указанный формат на «yyyy-dd-MM» или «yyyy-MM-dd»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...