РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
912 of 1163 menu

Метод between

Метод between класса Duration вычисляет интервал времени между двумя временными объектами и возвращает его в виде нового объекта Duration. В первом параметре мы передаем начальный временной объект (например, LocalDateTime или Instant), во второй параметр - конечный временной объект того же типа. Если конечный момент наступает раньше начального, результирующая длительность будет отрицательной.

Метод является статическим, поэтому вызывается через имя класса: Duration.between. Оба переданных объекта должны поддерживать интерфейс Temporal, иначе компилятор выдаст ошибку. В качестве единицы измерения результата используется наносекундная точность, если исходные объекты её поддерживают.

Чаще всего метод применяют с классами LocalDateTime, LocalTime, Instant и ZonedDateTime. Полученный объект Duration затем можно преобразовать в секунды, миллисекунды или минуты с помощью методов toSeconds, toMillis и toMinutes.

Синтаксис

Duration.between(start, end)

Пример

Давайте вычислим интервал между двумя моментами времени, заданными как объекты LocalTime:

import java.time.Duration; import java.time.LocalTime; public class Main { public static void main(String[] args) { LocalTime start = LocalTime.of(10, 0, 0); LocalTime end = LocalTime.of(12, 30, 0); Duration res = Duration.between(start, end); System.out.println(res); } }

Результат выполнения кода:

"PT2H30M"

Строка "PT2H30M" означает 2 часа 30 минут (формат ISO-8601: P - период, T - время, H - часы, M - минуты).

Пример

Давайте получим длительность в секундах и миллисекундах, используя метод between с объектами Instant:

import java.time.Duration; import java.time.Instant; public class Main { public static void main(String[] args) { Instant start = Instant.parse("2024-01-01T00:00:00Z"); Instant end = Instant.parse("2024-01-01T00:01:40Z"); Duration res = Duration.between(start, end); System.out.println(res.toSeconds()); System.out.println(res.toMillis()); } }

Результат выполнения кода:

100 100000

Пример

Если конечный момент раньше начального, метод возвращает отрицательную длительность. Проверим это с помощью метода isNegative:

import java.time.Duration; import java.time.LocalDateTime; public class Main { public static void main(String[] args) { LocalDateTime start = LocalDateTime.of(2024, 5, 10, 15, 0); LocalDateTime end = LocalDateTime.of(2024, 5, 10, 12, 0); Duration res = Duration.between(start, end); System.out.println(res); System.out.println(res.isNegative()); } }

Результат выполнения кода:

"PT-3H" true

Смотрите также

  • класс Duration,
    который представляет промежуток времени
  • метод ofSeconds,
    который создает длительность из секунд
  • метод toSeconds,
    который возвращает длительность в секундах
  • метод isNegative,
    который проверяет, является ли длительность отрицательной
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить