Spec-Zone.ru › OpenJDK 25

Класс Duration

java.lang.Object
java.time.Duration
Все реализуемые интерфейсы:
Serializable, Comparable<Duration>, TemporalAmount
public final class Duration extends Object implements TemporalAmount, Comparable<Duration>, Serializable
Величина времени, например «34,5 секунды».

Этот класс представляет количество времени в секундах и наносекундах. Его можно получать в других единицах измерения длительности, например в минутах и часах. Кроме того, можно использовать единицу DAYS, которая считается в точности равной 24 часам и, таким образом, не учитывает переходы на летнее время. Эквивалент этого класса для дат представлен классом Period.

Физическая длительность может быть бесконечной. Для практических целей длительность хранится с ограничениями, аналогичными ограничениям Instant. Точность длительности составляет одну наносекунду, а максимальное значение количества секунд — это максимальное значение, которое может храниться в long. Оно превышает текущую оценку возраста Вселенной.

Для хранения диапазона длительности требуется число, превышающее размер long. Для этого класс хранит long, представляющий секунды, и int, представляющий наносекунды в пределах секунды, значение которого всегда находится в диапазоне от 0 до 999 999 999. Модель представляет собой направленную длительность, то есть длительность может быть отрицательной.

Длительность измеряется в «секундах», которые не обязательно совпадают с научным определением «секунды СИ», основанным на атомных часах. Это различие влияет только на длительности, измеренные около високосной секунды, и не должно затрагивать большинство приложений. Обсуждение значения секунды и шкал времени см. в описании Instant.

Этот класс является классом, основанным на значениях; программистам следует считать экземпляры, которые равны, взаимозаменяемыми и не использовать экземпляры для синхронизации, иначе возможно непредсказуемое поведение. Например, в будущей версии синхронизация может перестать работать. Для сравнения следует использовать метод equals.

Требования к реализации:
Этот класс является неизменяемым и потокобезопасным.
Начиная с версии:
1.8
См. также:
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
static final Duration ZERO
Константа для нулевой длительности.

Краткое описание методов

Модификатор и тип Метод Описание
Duration abs()
Возвращает копию этой длительности с положительным значением.
Temporal addTo(Temporal temporal)
Добавляет эту длительность к указанному объекту времени.
static Duration between(Temporal startInclusive, Temporal endExclusive)
Получает Duration, представляющий длительность между двумя объектами времени.
int compareTo(Duration otherDuration)
Сравнивает эту длительность с указанным Duration.
Duration dividedBy(long divisor)
Возвращает копию этой длительности, разделённую на указанное значение.
long dividedBy(Duration divisor)
Возвращает количество полных раз, которое указанная Duration укладывается в эту Duration.
boolean equals(Object other)
Проверяет, равна ли эта длительность указанному Duration.
static Duration from(TemporalAmount amount)
Получает экземпляр Duration из временной величины.
long get(TemporalUnit unit)
Возвращает значение указанной единицы измерения.
int getNano()
Возвращает количество наносекунд в пределах секунды в этой длительности.
long getSeconds()
Возвращает количество секунд в этой длительности.
List<TemporalUnit> getUnits()
Возвращает набор единиц измерения, поддерживаемых этой длительностью.
int hashCode()
Хеш-код этой длительности.
boolean isNegative()
Проверяет, является ли эта длительность отрицательной, исключая нулевое значение.
boolean isPositive()
Проверяет, является ли эта длительность положительной, исключая нулевое значение.
boolean isZero()
Проверяет, равна ли эта длительность нулю.
Duration minus(long amountToSubtract, TemporalUnit unit)
Возвращает копию этой длительности, из которой вычтена указанная длительность.
Duration minus(Duration duration)
Возвращает копию этой длительности, из которой вычтена указанная длительность.
Duration minusDays(long daysToSubtract)
Возвращает копию этой длительности, из которой вычтено указанное количество стандартных 24-часовых дней.
Duration minusHours(long hoursToSubtract)
Возвращает копию этой длительности, из которой вычтено указанное количество часов.
Duration minusMillis(long millisToSubtract)
Возвращает копию этой длительности, из которой вычтено указанное количество миллисекунд.
Duration minusMinutes(long minutesToSubtract)
Возвращает копию этой длительности, из которой вычтено указанное количество минут.
Duration minusNanos(long nanosToSubtract)
Возвращает копию этой длительности, из которой вычтено указанное количество наносекунд.
Duration minusSeconds(long secondsToSubtract)
Возвращает копию этой длительности, из которой вычтено указанное количество секунд.
Duration multipliedBy(long multiplicand)
Возвращает копию этой длительности, умноженную на скаляр.
Duration negated()
Возвращает копию этой длительности с противоположным значением.
static Duration of(long amount, TemporalUnit unit)
Получает Duration, представляющий величину в указанной единице измерения.
static Duration ofDays(long days)
Получает Duration, представляющий количество стандартных 24-часовых дней.
static Duration ofHours(long hours)
Получает Duration, представляющий количество стандартных часов.
static Duration ofMillis(long millis)
Получает Duration, представляющий количество миллисекунд.
static Duration ofMinutes(long minutes)
Получает Duration, представляющий количество стандартных минут.
static Duration ofNanos(long nanos)
Получает Duration, представляющий количество наносекунд.
static Duration ofSeconds(long seconds)
Получает Duration, представляющий количество секунд.
static Duration ofSeconds(long seconds, long nanoAdjustment)
Получает Duration, представляющий количество секунд и поправку в наносекундах.
static Duration parse(CharSequence text)
Получает Duration из текстовой строки, например PnDTnHnMn.nS.
Duration plus(long amountToAdd, TemporalUnit unit)
Возвращает копию этой длительности, к которой добавлена указанная длительность.
Duration plus(Duration duration)
Возвращает копию этой длительности, к которой добавлена указанная длительность.
Duration plusDays(long daysToAdd)
Возвращает копию этой длительности, к которой добавлено указанное количество стандартных 24-часовых дней.
Duration plusHours(long hoursToAdd)
Возвращает копию этой длительности, к которой добавлено указанное количество часов.
Duration plusMillis(long millisToAdd)
Возвращает копию этой длительности, к которой добавлено указанное количество миллисекунд.
Duration plusMinutes(long minutesToAdd)
Возвращает копию этой длительности, к которой добавлено указанное количество минут.
Duration plusNanos(long nanosToAdd)
Возвращает копию этой длительности, к которой добавлено указанное количество наносекунд.
Duration plusSeconds(long secondsToAdd)
Возвращает копию этой длительности, к которой добавлено указанное количество секунд.
Temporal subtractFrom(Temporal temporal)
Вычитает эту длительность из указанного объекта времени.
long toDays()
Возвращает количество дней в этой длительности.
long toDaysPart()
Извлекает количество дней из длительности.
long toHours()
Возвращает количество часов в этой длительности.
int toHoursPart()
Извлекает количество часов из длительности.
long toMillis()
Преобразует эту длительность в общее количество миллисекунд.
int toMillisPart()
Извлекает количество миллисекунд из длительности.
long toMinutes()
Возвращает количество минут в этой длительности.
int toMinutesPart()
Извлекает количество минут из длительности.
long toNanos()
Преобразует эту длительность в общее количество наносекунд, представленное значением типа long.
int toNanosPart()
Возвращает часть длительности, составляющую наносекунды в пределах секунды.
long toSeconds()
Возвращает количество секунд в этой длительности.
int toSecondsPart()
Извлекает количество секунд из длительности.
String toString()
Строковое представление этой длительности в формате на основе секунд ISO-8601, например PT8H6M12.345S.
Duration truncatedTo(TemporalUnit unit)
Возвращает копию этого Duration, усечённую до указанной единицы измерения.
Duration withNanos(int nanoOfSecond)
Возвращает копию этой длительности с указанным значением наносекунд в пределах секунды.
Duration withSeconds(long seconds)
Возвращает копию этой длительности с указанным количеством секунд.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание полей

ZERO

public static final Duration ZERO
Константа для нулевой продолжительности.

Подробное описание методов

ofDays

public static Duration ofDays(long days)
Создает Duration, представляющую количество стандартных суток длительностью 24 часа.

Количество секунд вычисляется на основе стандартного определения суток: каждые сутки составляют 86400 секунд, то есть 24 часа. Поле наносекунд в секунде устанавливается в ноль.

Параметры:
days — количество суток, положительное или отрицательное
Возвращает:
Duration, не null
Исключения:
ArithmeticException — если количество переданных суток превышает вместимость Duration

ofHours

public static Duration ofHours(long hours)
Создает Duration, представляющую количество стандартных часов.

Количество секунд вычисляется на основе стандартного определения часа: каждый час составляет 3600 секунд. Поле наносекунд в секунде устанавливается в ноль.

Параметры:
hours — количество часов, положительное или отрицательное
Возвращает:
Duration, не null
Исключения:
ArithmeticException — если количество переданных часов превышает вместимость Duration

ofMinutes

public static Duration ofMinutes(long minutes)
Создает Duration, представляющую количество стандартных минут.

Количество секунд вычисляется на основе стандартного определения минуты: каждая минута составляет 60 секунд. Поле наносекунд в секунде устанавливается в ноль.

Параметры:
minutes — количество минут, положительное или отрицательное
Возвращает:
Duration, не null
Исключения:
ArithmeticException — если количество переданных минут превышает вместимость Duration

ofSeconds

public static Duration ofSeconds(long seconds)
Создает Duration, представляющую количество секунд.

Поле наносекунд в секунде устанавливается в ноль.

Параметры:
seconds — количество секунд, положительное или отрицательное
Возвращает:
Duration, не null

ofSeconds

public static Duration ofSeconds(long seconds, long nanoAdjustment)
Создает Duration, представляющую количество секунд и поправку в наносекундах.

Этот метод позволяет передать произвольное количество наносекунд. Фабричный метод изменяет значения секунд и наносекунд, чтобы хранимое значение наносекунд находилось в диапазоне от 0 до 999,999,999. Например, следующие значения дают одинаковую продолжительность:

 Duration.ofSeconds(3, 1);
 Duration.ofSeconds(4, -999_999_999);
 Duration.ofSeconds(2, 1000_000_001);
Параметры:
seconds — количество секунд, положительное или отрицательное
nanoAdjustment — поправка в наносекундах к количеству секунд, положительная или отрицательная
Возвращает:
Duration, не null
Исключения:
ArithmeticException — если поправка приводит к превышению вместимости Duration

ofMillis

public static Duration ofMillis(long millis)
Создает Duration, представляющую количество миллисекунд.

Значения секунд и наносекунд извлекаются из указанного количества миллисекунд.

Параметры:
millis — количество миллисекунд, положительное или отрицательное
Возвращает:
Duration, не null

ofNanos

public static Duration ofNanos(long nanos)
Создает Duration, представляющую количество наносекунд.

Значения секунд и наносекунд извлекаются из указанного количества наносекунд.

Параметры:
nanos — количество наносекунд, положительное или отрицательное
Возвращает:
Duration, не null

of

public static Duration of(long amount, TemporalUnit unit)
Создает Duration, представляющую величину в указанных единицах.

Параметры представляют две части выражения, например «6 часов». Например:

 Duration.of(3, SECONDS);
 Duration.of(465, HOURS);
Этот метод принимает только часть единиц измерения. Единица должна иметь точную продолжительность либо быть ChronoUnit.DAYS, которая считается равной 24 часам. Для других единиц возникает исключение.
Параметры:
amount — величина продолжительности, выраженная в указанных единицах, положительная или отрицательная
unit — единица измерения продолжительности; должна иметь точную продолжительность, не null
Возвращает:
Duration, не null
Исключения:
DateTimeException — если продолжительность единицы является оценочной
ArithmeticException — при числовом переполнении

from

public static Duration from(TemporalAmount amount)
Создает экземпляр Duration на основе временной величины.

Создает продолжительность на основе указанной величины. TemporalAmount представляет величину времени, которая может быть основана на дате или времени; этот фабричный метод преобразует ее в продолжительность.

При преобразовании выполняется перебор набора единиц величины, а продолжительность каждой единицы используется для вычисления общей величины Duration. Этот метод принимает только часть единиц измерения. Единица должна иметь точную продолжительность либо быть ChronoUnit.DAYS, которая считается равной 24 часам. Если обнаружены другие единицы, возникает исключение.

Параметры:
amount — временная величина для преобразования, не null
Возвращает:
эквивалентная продолжительность, не null
Исключения:
DateTimeException — если преобразование в Duration невозможно
ArithmeticException — при числовом переполнении

parse

public static Duration parse(CharSequence text)
Создает Duration из текстовой строки, например PnDTnHnMn.nS.

Метод анализирует текстовое представление продолжительности, в том числе строку, созданную методом toString(). Допустимые форматы основаны на формате продолжительности ISO-8601 PnDTnHnMn.nS, где сутки считаются равными ровно 24 часам.

Строка начинается с необязательного знака — символа минуса или плюса ASCII. Если указан минус, вся продолжительность становится отрицательной. Далее следует латинская буква «P» в верхнем или нижнем регистре. Затем идут четыре секции, каждая из которых состоит из числа и суффикса. Суффиксы секций — символы ASCII «D», «H», «M» и «S», обозначающие сутки, часы, минуты и секунды; допускается верхний или нижний регистр. Суффиксы должны идти в указанном порядке. Перед первым появлением секции часов, минут или секунд (если такая секция есть) должна стоять латинская буква ASCII «T». Должна присутствовать хотя бы одна из четырех секций; если указана «T», после нее должна присутствовать хотя бы одна секция. Числовая часть каждой секции должна состоять из одной или нескольких цифр ASCII. Перед числом может стоять символ ASCII минуса или плюса. Количество суток, часов и минут должно разбираться как long. Количество секунд должно разбираться как long, при этом допускается дробная часть. В качестве десятичного разделителя можно использовать точку или запятую. Дробная часть может содержать от нуля до 9 цифр.

Начальный знак плюса или минуса, а также отрицательные значения других единиц не входят в стандарт ISO-8601.

Примеры:

   "PT20.345S" -- parses as "20.345 seconds"
   "PT15M"     -- parses as "15 minutes" (where a minute is 60 seconds)
   "PT10H"     -- parses as "10 hours" (where an hour is 3600 seconds)
   "P2D"       -- parses as "2 days" (where a day is 24 hours or 86400 seconds)
   "P2DT3H4M"  -- parses as "2 days, 3 hours and 4 minutes"
   "PT-6H3M"    -- parses as "-6 hours and +3 minutes"
   "-PT6H3M"    -- parses as "-6 hours and -3 minutes"
   "-PT-6H+3M"  -- parses as "+6 hours and -3 minutes"
Параметры:
text — анализируемый текст, не null
Возвращает:
разобранная продолжительность, не null
Исключения:
DateTimeParseException — если текст невозможно разобрать как продолжительность

between

public static Duration between(Temporal startInclusive, Temporal endExclusive)
Создает Duration, представляющую продолжительность между двумя временными объектами.

Вычисляет продолжительность между двумя временными объектами. Если объекты имеют разные типы, продолжительность вычисляется на основе типа первого объекта. Например, если первый аргумент — LocalTime, второй аргумент преобразуется в LocalTime.

Указанные временные объекты должны поддерживать единицу SECONDS. Для полной точности должна поддерживаться либо единица NANOS, либо поле NANO_OF_SECOND.

Результатом этого метода может быть отрицательная продолжительность, если конец предшествует началу. Чтобы гарантированно получить положительную продолжительность, вызовите для результата метод abs().

Параметры:
startInclusive — начальный момент включительно, не null
endExclusive — конечный момент исключительно, не null
Возвращает:
Duration, не null
Исключения:
DateTimeException — если невозможно получить количество секунд между временными объектами
ArithmeticException — если вычисление превышает вместимость Duration

get

public long get(TemporalUnit unit)
Возвращает значение запрошенной единицы измерения.

Метод возвращает значение для каждой из двух поддерживаемых единиц: SECONDS и NANOS. Для всех остальных единиц возникает исключение.

Определено в:
get в интерфейсе TemporalAmount
Параметры:
unit — TemporalUnit, значение которой нужно вернуть
Возвращает:
значение единицы типа long
Исключения:
DateTimeException — если единица не поддерживается
UnsupportedTemporalTypeException — если единица не поддерживается

getUnits

public List<TemporalUnit> getUnits()
Возвращает набор единиц, поддерживаемых этой продолжительностью.

Поддерживаются единицы SECONDS и NANOS. Они возвращаются в следующем порядке: секунды, наносекунды.

Этот набор можно использовать вместе с методом get(TemporalUnit), чтобы получить все данные о продолжительности.

Определено в:
getUnits в интерфейсе TemporalAmount
Возвращает:
список, содержащий единицы секунд и наносекунд, не null

isPositive

public boolean isPositive()
Проверяет, является ли продолжительность положительной, исключая нулевую.

Duration представляет направленное расстояние между двумя точками на временной шкале и поэтому может быть положительной, нулевой или отрицательной. Этот метод проверяет, больше ли ее длительность нуля.

Возвращает:
true, если общая длительность больше нуля
С версии:
18

isZero

public boolean isZero()
Проверяет, равна ли продолжительность нулю.

Duration представляет направленное расстояние между двумя точками на временной шкале и поэтому может быть положительной, нулевой или отрицательной. Этот метод проверяет, равна ли ее длительность нулю.

Возвращает:
true, если общая длительность равна нулю

isNegative

public boolean isNegative()
Проверяет, является ли продолжительность отрицательной, исключая нулевую.

Duration представляет направленное расстояние между двумя точками на временной шкале и поэтому может быть положительной, нулевой или отрицательной. Этот метод проверяет, меньше ли ее длительность нуля.

Возвращает:
true, если общая длительность меньше нуля

getSeconds

public long getSeconds()
Возвращает количество секунд в этой продолжительности.

Длительность хранится в двух полях: секундах и наносекундах. Часть в наносекундах — это значение от 0 до 999,999,999, корректирующее длительность в секундах. Общая продолжительность определяется вызовом этого метода и метода getNano().

Duration представляет направленное расстояние между двумя точками на временной шкале. Отрицательная продолжительность выражается отрицательным знаком части в секундах. Продолжительность в -1 наносекунду хранится как -1 секунда плюс 999,999,999 наносекунд.

Возвращает:
целая часть длительности в секундах, положительная или отрицательная

getNano

public int getNano()
Возвращает количество наносекунд в пределах секунды этой продолжительности.

Длительность хранится в двух полях: секундах и наносекундах. Часть в наносекундах — это значение от 0 до 999,999,999, корректирующее длительность в секундах. Общая продолжительность определяется вызовом этого метода и метода getSeconds().

Duration представляет направленное расстояние между двумя точками на временной шкале. Отрицательная продолжительность выражается отрицательным знаком части в секундах. Продолжительность в -1 наносекунду хранится как -1 секунда плюс 999,999,999 наносекунд.

Возвращает:
количество наносекунд в части длительности внутри секунды, от 0 до 999,999,999

withSeconds

public Duration withSeconds(long seconds)
Возвращает копию этой продолжительности с указанным количеством секунд.

Возвращает продолжительность с указанным количеством секунд, сохраняя часть этой продолжительности, относящуюся к наносекундам внутри секунды.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
seconds — представляемое количество секунд, может быть отрицательным
Возвращает:
Duration на основе этой продолжительности с запрошенным количеством секунд, не null

withNanos

public Duration withNanos(int nanoOfSecond)
Возвращает копию этой продолжительности с указанным количеством наносекунд внутри секунды.

Возвращает продолжительность с указанным количеством наносекунд внутри секунды, сохраняя часть этой продолжительности в секундах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
nanoOfSecond — представляемое количество наносекунд внутри секунды, от 0 до 999,999,999
Возвращает:
Duration на основе этой продолжительности с запрошенным количеством наносекунд внутри секунды, не null
Исключения:
DateTimeException — если значение наносекунд внутри секунды недопустимо

plus

public Duration plus(Duration duration)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
duration — добавляемая продолжительность, положительная или отрицательная, не null
Возвращает:
Duration на основе этой продолжительности с добавленной указанной продолжительностью, не null
Исключения:
ArithmeticException — при числовом переполнении

plus

public Duration plus(long amountToAdd, TemporalUnit unit)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью.

Величина продолжительности измеряется в указанных единицах. Этот метод принимает только часть единиц измерения. Единица должна иметь точную продолжительность либо быть ChronoUnit.DAYS, которая считается равной 24 часам. Для других единиц возникает исключение.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
amountToAdd — добавляемая величина, выраженная в указанных единицах, положительная или отрицательная
unit — единица измерения величины; должна иметь точную продолжительность, не null
Возвращает:
Duration на основе этой продолжительности с добавленной указанной продолжительностью, не null
Исключения:
UnsupportedTemporalTypeException — если единица не поддерживается
ArithmeticException — при числовом переполнении

plusDays

public Duration plusDays(long daysToAdd)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью в стандартных сутках по 24 часа.

Количество суток умножается на 86400, чтобы получить количество добавляемых секунд. Это основано на стандартном определении суток как 24 часов.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
daysToAdd — добавляемое количество суток, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с добавленным указанным количеством суток, не null
Исключения:
ArithmeticException — при числовом переполнении

plusHours

public Duration plusHours(long hoursToAdd)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью в часах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
hoursToAdd — добавляемое количество часов, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с добавленным указанным количеством часов, не null
Исключения:
ArithmeticException — при числовом переполнении

plusMinutes

public Duration plusMinutes(long minutesToAdd)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью в минутах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
minutesToAdd — добавляемое количество минут, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с добавленным указанным количеством минут, не null
Исключения:
ArithmeticException — при числовом переполнении

plusSeconds

public Duration plusSeconds(long secondsToAdd)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью в секундах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
secondsToAdd — добавляемое количество секунд, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с добавленным указанным количеством секунд, не null
Исключения:
ArithmeticException — при числовом переполнении

plusMillis

public Duration plusMillis(long millisToAdd)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью в миллисекундах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
millisToAdd — добавляемое количество миллисекунд, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с добавленным указанным количеством миллисекунд, не null
Исключения:
ArithmeticException — при числовом переполнении

plusNanos

public Duration plusNanos(long nanosToAdd)
Возвращает копию этой продолжительности с добавленной указанной продолжительностью в наносекундах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
nanosToAdd — добавляемое количество наносекунд, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с добавленным указанным количеством наносекунд, не null
Исключения:
ArithmeticException — при числовом переполнении

minus

public Duration minus(Duration duration)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
duration — вычитаемая продолжительность, положительная или отрицательная, не null
Возвращает:
Duration на основе этой продолжительности с вычтенной указанной продолжительностью, не null
Исключения:
ArithmeticException — при числовом переполнении

minus

public Duration minus(long amountToSubtract, TemporalUnit unit)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью.

Величина продолжительности измеряется в указанных единицах. Этот метод принимает только часть единиц измерения. Единица должна иметь точную продолжительность либо быть ChronoUnit.DAYS, которая считается равной 24 часам. Для других единиц возникает исключение.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
amountToSubtract — вычитаемая величина, выраженная в указанных единицах, положительная или отрицательная
unit — единица измерения величины; должна иметь точную продолжительность, не null
Возвращает:
Duration на основе этой продолжительности с вычтенной указанной продолжительностью, не null
Исключения:
ArithmeticException — при числовом переполнении

minusDays

public Duration minusDays(long daysToSubtract)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью в стандартных сутках по 24 часа.

Количество суток умножается на 86400, чтобы получить количество вычитаемых секунд. Это основано на стандартном определении суток как 24 часов.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
daysToSubtract — вычитаемое количество суток, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с вычтенным указанным количеством суток, не null
Исключения:
ArithmeticException — при числовом переполнении

minusHours

public Duration minusHours(long hoursToSubtract)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью в часах.

Количество часов умножается на 3600, чтобы получить количество вычитаемых секунд.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
hoursToSubtract — вычитаемое количество часов, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с вычтенным указанным количеством часов, не null
Исключения:
ArithmeticException — при числовом переполнении

minusMinutes

public Duration minusMinutes(long minutesToSubtract)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью в минутах.

Количество часов умножается на 60, чтобы получить количество вычитаемых секунд.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
minutesToSubtract — вычитаемое количество минут, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с вычтенным указанным количеством минут, не null
Исключения:
ArithmeticException — при числовом переполнении

minusSeconds

public Duration minusSeconds(long secondsToSubtract)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью в секундах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
secondsToSubtract — вычитаемое количество секунд, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с вычтенным указанным количеством секунд, не null
Исключения:
ArithmeticException — при числовом переполнении

minusMillis

public Duration minusMillis(long millisToSubtract)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью в миллисекундах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
millisToSubtract — вычитаемое количество миллисекунд, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с вычтенным указанным количеством миллисекунд, не null
Исключения:
ArithmeticException — при числовом переполнении

minusNanos

public Duration minusNanos(long nanosToSubtract)
Возвращает копию этой продолжительности с вычтенной указанной продолжительностью в наносекундах.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
nanosToSubtract — вычитаемое количество наносекунд, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности с вычтенным указанным количеством наносекунд, не null
Исключения:
ArithmeticException — при числовом переполнении

multipliedBy

public Duration multipliedBy(long multiplicand)
Возвращает копию этой продолжительности, умноженной на скаляр.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
multiplicand — число, на которое умножается продолжительность, положительное или отрицательное
Возвращает:
Duration на основе этой продолжительности, умноженной на указанный скаляр, не null
Исключения:
ArithmeticException — при числовом переполнении

dividedBy

public Duration dividedBy(long divisor)
Возвращает копию этой продолжительности, разделенной на указанное значение.

Этот экземпляр неизменяем, и вызов метода не изменяет его.

Параметры:
divisor — число, на которое делится продолжительность; положительное или отрицательное, но не ноль
Возвращает:
Duration на основе этой продолжительности, разделенной на указанный делитель, не null
Исключения:
ArithmeticException — если делитель равен нулю или произошло числовое переполнение

dividedBy

public long dividedBy(Duration divisor)
Возвращает количество полных раз, которое указанная Duration содержится в этой Duration.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Параметры:
divisor — значение, на которое нужно разделить длительность; положительное или отрицательное, не null
Возвращает:
количество полных раз, округлённое к нулю, которое указанная Duration содержится в этой Duration; может быть отрицательным
Исключения:
ArithmeticException — если делитель равен нулю или происходит переполнение числового значения
Начиная с:
9

negated

public Duration negated()
Возвращает копию этой длительности с противоположным знаком.

Этот метод меняет знак общей длительности на противоположный. Например, PT1.3S будет возвращено как PT-1.3S.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
Duration на основе этой длительности с количеством, имеющим противоположный знак; не null
Исключения:
ArithmeticException — если происходит переполнение числового значения

abs

public Duration abs()
Возвращает копию этой длительности с положительным значением.

Этот метод возвращает положительную длительность, фактически удаляя знак у отрицательного общего значения. Например, PT-1.3S будет возвращено как PT1.3S.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
Duration на основе этой длительности с абсолютным значением; не null
Исключения:
ArithmeticException — если происходит переполнение числового значения

addTo

public Temporal addTo(Temporal temporal)
Добавляет эту длительность к указанному временному объекту.

Возвращает временной объект того же наблюдаемого типа, что и входной, к которому добавлена эта длительность.

В большинстве случаев понятнее изменить порядок вызова и использовать Temporal.plus(TemporalAmount).

  // these two lines are equivalent, but the second approach is recommended
  dateTime = thisDuration.addTo(dateTime);
  dateTime = dateTime.plus(thisDuration);

При вычислении сначала будут добавлены секунды, а затем наносекунды. Добавляются только ненулевые значения.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Определён в:
addTo в интерфейсе TemporalAmount
Параметры:
temporal — временной объект для корректировки; не null
Возвращает:
объект того же типа с выполненной корректировкой; не null
Исключения:
DateTimeException — если сложение невозможно
ArithmeticException — если происходит переполнение числового значения

subtractFrom

public Temporal subtractFrom(Temporal temporal)
Вычитает эту длительность из указанного временного объекта.

Возвращает временной объект того же наблюдаемого типа, что и входной, из которого вычтена эта длительность.

В большинстве случаев понятнее изменить порядок вызова и использовать Temporal.minus(TemporalAmount).

  // these two lines are equivalent, but the second approach is recommended
  dateTime = thisDuration.subtractFrom(dateTime);
  dateTime = dateTime.minus(thisDuration);

При вычислении сначала будут вычтены секунды, а затем наносекунды. Добавляются только ненулевые значения.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Определён в:
subtractFrom в интерфейсе TemporalAmount
Параметры:
temporal — временной объект для корректировки; не null
Возвращает:
объект того же типа с выполненной корректировкой; не null
Исключения:
DateTimeException — если вычитание невозможно
ArithmeticException — если происходит переполнение числового значения

toDays

public long toDays()
Возвращает количество дней в этой длительности.

Возвращает общее количество дней в длительности, деля количество секунд на 86400. Расчёт основан на стандартном определении дня как 24 часов.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество дней в длительности; может быть отрицательным

toHours

public long toHours()
Возвращает количество часов в этой длительности.

Возвращает общее количество часов в длительности, деля количество секунд на 3600.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество часов в длительности; может быть отрицательным

toMinutes

public long toMinutes()
Возвращает количество минут в этой длительности.

Возвращает общее количество минут в длительности, деля количество секунд на 60.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество минут в длительности; может быть отрицательным

toSeconds

public long toSeconds()
Возвращает количество секунд в этой длительности.

Возвращает общее количество полных секунд в длительности.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
часть длительности, выраженную в целых секундах; положительная или отрицательная
Начиная с:
9

toMillis

public long toMillis()
Преобразует эту длительность в общее количество миллисекунд.

Если эта длительность слишком велика, чтобы уместиться в long миллисекунд, будет выброшено исключение.

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

Возвращает:
общая длительность в миллисекундах
Исключения:
ArithmeticException — если происходит переполнение числового значения

toNanos

public long toNanos()
Преобразует эту длительность в общее количество наносекунд, представленное типом long.

Если эта длительность слишком велика, чтобы уместиться в long наносекунд, будет выброшено исключение.

Возвращает:
общая длительность в наносекундах
Исключения:
ArithmeticException — если происходит переполнение числового значения

toDaysPart

public long toDaysPart()
Извлекает количество дней из длительности.

Возвращает общее количество дней в длительности, деля количество секунд на 86400. Расчёт основан на стандартном определении дня как 24 часов.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Примечание к API:
Этот метод работает точно так же, как toDays().
Возвращает:
количество дней в длительности; может быть отрицательным
Начиная с:
9

toHoursPart

public int toHoursPart()
Извлекает часовую часть длительности.

Возвращает количество оставшихся часов после деления toHours() на количество часов в сутках. Расчёт основан на стандартном определении дня как 24 часов.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество часов в часовой части длительности; может быть отрицательным
Начиная с:
9

toMinutesPart

public int toMinutesPart()
Извлекает минутную часть длительности.

Возвращает количество оставшихся минут после деления toMinutes() на количество минут в часе. Расчёт основан на стандартном определении часа как 60 минут.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество минут в минутной части длительности; может быть отрицательным
Начиная с:
9

toSecondsPart

public int toSecondsPart()
Извлекает секундную часть длительности.

Возвращает количество оставшихся секунд после деления toSeconds() на количество секунд в минуте. Расчёт основан на стандартном определении минуты как 60 секунд.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество секунд в секундной части длительности; может быть отрицательным
Начиная с:
9

toMillisPart

public int toMillisPart()
Извлекает миллисекундную часть длительности.

Возвращает миллисекундную часть, деля количество наносекунд на 1 000 000. Длительность хранится в двух полях — секундах и наносекундах. Часть в наносекундах — это значение от 0 до 999 999 999, корректирующее длительность в секундах. Общая длительность определяется вызовом getNano() и getSeconds().

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество миллисекунд в миллисекундной части длительности.
Начиная с:
9

toNanosPart

public int toNanosPart()
Возвращает часть длительности в наносекундах внутри секунд.

Длительность хранится в двух полях — секундах и наносекундах. Часть в наносекундах — это значение от 0 до 999 999 999, корректирующее длительность в секундах. Общая длительность определяется вызовом getNano() и getSeconds().

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Возвращает:
количество наносекунд в секундной части длительности, от 0 до 999 999 999
Начиная с:
9

truncatedTo

public Duration truncatedTo(TemporalUnit unit)
Возвращает копию этой Duration, усечённую до указанной единицы измерения.

Усечение длительности возвращает копию исходного значения, в которой концептуальные поля, меньшие указанной единицы измерения, установлены в ноль. Например, усечение до единицы MINUTES округлит значение вниз к нулю до ближайшей минуты, установив секунды и наносекунды в ноль.

Длительность, соответствующая единице измерения, должна делить продолжительность стандартного дня без остатка. Это условие выполняется для всех единиц измерения времени из ChronoUnit и для DAYS. Для других ChronoUnits выбрасывается исключение.

Этот экземпляр неизменяем и не изменяется при вызове этого метода.

Параметры:
unit — единица измерения, до которой нужно усечь; не null
Возвращает:
Duration на основе этой длительности с усечённым временем; не null
Исключения:
DateTimeException — если единица измерения недопустима для усечения
UnsupportedTemporalTypeException — если единица измерения не поддерживается
Начиная с:
9

compareTo

public int compareTo(Duration otherDuration)
Сравнивает эту длительность с указанной Duration.

Сравнение основано на общей продолжительности длительностей. Оно «согласуется с equals» согласно определению в Comparable.

Определён в:
compareTo в интерфейсе Comparable<Duration>
Параметры:
otherDuration — другая длительность для сравнения; не null
Возвращает:
значение сравнения: меньше нуля, если эта длительность меньше otherDuration; ноль, если они равны; больше нуля, если эта длительность больше otherDuration

equals

public boolean equals(Object other)
Проверяет, равна ли эта длительность указанной Duration.

Сравнение основано на общей продолжительности длительностей.

Переопределяет:
equals в классе Object
Параметры:
other — другая длительность; для null возвращается false
Возвращает:
true, если другая длительность равна этой
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Хеш-код этой длительности.
Переопределяет:
hashCode в классе Object
Возвращает:
подходящий хеш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Строковое представление этой длительности в формате, основанном на секундах ISO-8601, например PT8H6M12.345S.

Возвращаемая строка имеет формат PTnHnMnS, где n — соответствующая часть длительности в часах, минутах или секундах. Дробная часть секунд указывается после десятичной точки в секции секунд. Секции с нулевым значением опускаются. Знак у часов, минут и секунд будет одинаковым.

Примеры:

   "20.345 seconds"                 -- "PT20.345S
   "15 minutes" (15 * 60 seconds)   -- "PT15M"
   "10 hours" (10 * 3600 seconds)   -- "PT10H"
   "2 days" (2 * 86400 seconds)     -- "PT48H"
Обратите внимание, что значения, кратные 24 часам, не выводятся в виде дней, чтобы избежать путаницы с Period.
Переопределяет:
toString в классе Object
Возвращает:
представление этой длительности в формате ISO-8601; не null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/Duration.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API