Класс Duration
Класс Duration из пакета java.time представляет
собой промежуток времени, измеряемый в секундах и наносекундах.
Он часто используется для хранения разницы между двумя моментами
времени или для задания временного интервала. Объект Duration
неизменяем: все методы, изменяющие значение, возвращают новый
экземпляр. Класс реализует интерфейс Comparable, поэтому
два промежутка можно сравнивать между собой.
Создать объект Duration можно с помощью статических
фабричных методов, например ofSeconds, ofMinutes
или between. В первый параметр таких методов мы передаем
число единиц времени, а метод between принимает два
объекта Temporal и вычисляет промежуток между ними.
Синтаксис
Duration.ofSeconds(seconds)
Duration.ofMillis(millis)
Duration.ofMinutes(minutes)
Duration.ofHours(hours)
Duration.ofDays(days)
Duration.between(start, end)
Пример
Давайте создадим промежуток в 90 секунд и выведем
его значение:
import java.time.Duration;
public class Main
{
public static void main(String[] args)
{
Duration duration = Duration.ofSeconds(90);
System.out.println(duration);
}
}
Результат выполнения кода:
"PT1M30S"
Пример
Давайте получим количество секунд и миллисекунд из промежутка
в 2 минуты:
import java.time.Duration;
public class Main
{
public static void main(String[] args)
{
Duration duration = Duration.ofMinutes(2);
System.out.println(duration.toSeconds());
System.out.println(duration.toMillis());
}
}
Результат выполнения кода:
120
120000
Пример
Давайте найдем промежуток между двумя моментами времени и проверим, является ли он отрицательным:
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(9, 30, 0);
Duration duration = Duration.between(start, end);
System.out.println(duration);
System.out.println(duration.isNegative());
}
}
Результат выполнения кода:
"PT-30M"
true
Пример
Давайте сложим два промежутка и получим результат в минутах:
import java.time.Duration;
public class Main
{
public static void main(String[] args)
{
Duration first = Duration.ofMinutes(3);
Duration second = Duration.ofMinutes(2);
Duration res = first.plus(second);
System.out.println(res);
System.out.println(res.toMinutes());
}
}
Результат выполнения кода:
"PT5M"
5