Duration
Промежуток времени в секундах и наносекундах — часы, минуты, секунды.
Доступно с: Java 8
Синтаксис
public final class Duration implements TemporalAmount, Comparable<Duration>Примеры
Длительность между двумя моментами:
void main() {
LocalTime start = LocalTime.of(9, 15);
LocalTime end = LocalTime.of(17, 45);
Duration work = Duration.between(start, end);
IO.println(work);
IO.println(work.toMinutes());
IO.println(work.toHours() + "h " + work.toMinutesPart() + "m");
}Результат:
PT8H30M
510
8h 30mСоздание и прибавление к времени:
void main() {
Duration timeout = Duration.ofSeconds(90);
IO.println(timeout);
IO.println(LocalTime.of(10, 0).plus(timeout));
IO.println(Duration.ofMinutes(45).plusHours(1).toMinutes());
}Результат:
PT1M30S
10:01:30
105Примечания
toString() выводит формат ISO-8601: PT8H30M — 8 часов 30 минут. Для людей собирайте строку из toHoursPart(), toMinutesPart(), toSecondsPart() (Java 9). Для дней, месяцев и лет календаря используйте Period. Замерить время работы кода можно через System.nanoTime() или Instant.now().
См. также
- Period — Календарный промежуток в годах, месяцах и днях — например, возраст.
- ChronoUnit.between() — Считает количество целых единиц (дней, месяцев, часов) между двумя датами или моментами.
- Instant — Точный момент времени на временной шкале UTC — для логов, меток времени и замеров.
- LocalTime — Время суток без даты — например, время открытия магазина.
Вопросы и ответы по теме
В учебнике
- Даты и время — Пакет java.time — LocalDate, LocalTime, LocalDateTime, арифметика дат, Period, Duration, ChronoUnit, часовые пояса и Instant.