Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
10 Июл 2023
2 мин
977

Расчёт разницы между двумя датами в Java

Одной из распространённых задач в программировании является расчёт разницы между двумя датами. Примером может быть необходимость определить количество

Одной из распространённых задач в программировании является расчёт разницы между двумя датами. Примером может быть необходимость определить количество лет, месяцев, дней, часов, минут и секунд между двумя точками во времени, представленными в виде объектов LocalDateTime.

Существует несколько способов решения этой задачи в Java, но одним из наиболее эффективных и надёжных является использование классов Period и Duration из пакета java.time, который был добавлен в Java 8.

Пример кода:

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.Period;

public class Main {

    public static void main(String[] args) {
        LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45);
        LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55);

        Period period = Period.between(fromDateTime.toLocalDate(), toDateTime.toLocalDate());
        Duration duration = Duration.between(fromDateTime.toLocalTime(), toDateTime.toLocalTime());

        System.out.println(period.getYears() + " years " + 
                period.getMonths() + " months " + 
                period.getDays() + " days " +
                duration.toHoursPart() + " hours " +
                duration.toMinutesPart() + " minutes " +
                duration.toSecondsPart() + " seconds.");
    }
}

В этом примере используются два класса: Period и Duration. Класс Period используется для расчёта разницы между двумя датами, а класс Duration — для расчёта разницы между двумя временами.

Метод Period.between() принимает два объекта LocalDate и возвращает объект Period, который представляет период времени в годах, месяцах и днях между двумя датами.

Метод Duration.between() принимает два объекта LocalTime и возвращает объект Duration, который представляет продолжительность времени в часах, минутах и секундах между двумя временами.

Важно отметить, что методы toHoursPart(), toMinutesPart() и toSecondsPart() класса Duration доступны начиная с Java 9. Они возвращают часть продолжительности в соответствующих единицах времени, игнорируя большие единицы времени. Например, toHoursPart() вернёт количество часов без учёта дней, а toMinutesPart() — количество минут без учёта часов.

Добавить комментарий

Подарок
Забрать подарок