Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Java. Вычисление прошедших лет, месяцев и дней между двумя датами

#java #datetime #calendar


Добрый день. Даны интервалы дат, например: 28.01.2009 - 05.03.2013. Стоит задача
высчитать точное количество полных лет, месяцев и дней в этом промежутке. Подскажите
как это сделать?

Просто количество дней нахожу так

    Date startDate = new SimpleDateFormat("dd.MM.yyyy").parse(s1);
    Date endDate = new SimpleDateFormat("dd.MM.yyyy").parse(s2);

    Calendar calendarStart = Calendar.getInstance();
    calendarStart.setTimeInMillis(startDate.getTime());

    Calendar calendarEnd = Calendar.getInstance();
    calendarEnd.setTimeInMillis(endDate.getTime());

    long difference = calendarEnd.getTimeInMillis() - calendarStart.getTimeInMillis();
    long days = difference /(24* 60 * 60 * 1000);

    System.out.println(days);


Результат надо представить в виде: Лет: 7, Месяцев: 5, Дней: 10
    


Ответы

Ответ 1



Всё довольно просто с использованием классов пакета java.time.* (в Java 8 и новее): DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); LocalDate startDate = LocalDate.parse("28.01.2009", formatter); LocalDate endDate = LocalDate.parse("05.03.2013", formatter); Period period = Period.between(startDate, endDate); System.out.println(period.getYears()); // 4 System.out.println(period.getMonths()); // 1 System.out.println(period.getDays()); // 5

Ответ 2



Посмотрите аналогичные обсуждения по ссылкам. Как высчитать ближайшие дни рождения с помощью LocalDate? Calculating the difference between two Java date instances Calculating days between two dates with Java

Комментариев нет:

Отправить комментарий