Одной из распространённых задач в программировании является расчёт разницы между двумя датами. Примером может быть необходимость определить количество лет, месяцев, дней, часов, минут и секунд между двумя точками во времени, представленными в виде объектов 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() — количество минут без учёта часов.
Перейти в телеграм, чтобы получить результаты теста



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