Класс Duration
- Все реализуемые интерфейсы:
Serializable, Comparable<Duration>, TemporalAmount
public final class Duration extends Object implements TemporalAmount, Comparable<Duration>, Serializable
Этот класс моделирует количество или величину времени в секундах и наносекундах. Доступ к значению можно получить в других единицах измерения длительности, например в минутах и часах. Кроме того, можно использовать единицу DAYS, которая считается в точности равной 24 часам, то есть эффекты перехода на летнее время игнорируются. Эквивалент этого класса для дат см. в классе Period.
Физическая длительность может быть бесконечной. Для практических целей длительность хранится с ограничениями, аналогичными ограничениям Instant. Длительность хранится с точностью до наносекунды, а максимальное значение секунд ограничено тем, что может храниться в long. Это значение превышает текущую оценку возраста Вселенной.
Для хранения диапазона длительности требуется число, превышающее размер long. Для этого класс хранит long, представляющее секунды, и int, представляющее наносекунды в секунде, значение которого всегда находится в диапазоне от 0 до 999 999 999. Модель представляет собой направленную длительность, то есть длительность может быть отрицательной.
Длительность измеряется в «секундах», однако они не обязательно идентичны научному определению «секунды СИ», основанному на атомных часах. Это различие влияет только на длительности, измеренные вблизи високосной секунды, и не должно затрагивать большинство приложений. Обсуждение значения секунды и шкал времени см. в классе Instant.
Этот класс является классом-значением; программистам следует считать экземпляры, которые равны, взаимозаменяемыми и не использовать их для синхронизации, иначе возможно непредсказуемое поведение. Например, в одном из будущих выпусков синхронизация может завершиться неудачей. Для сравнения следует использовать метод equals.
- Требования к реализации:
- Этот класс является неизменяемым и потокобезопасным.
- Появился в версии:
- 1.8
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final Duration |
MAX |
|
static final Duration |
MIN |
Минимальная поддерживаемая Duration: Long.MIN_VALUE секунд. |
static final Duration |
ZERO |
Константа, представляющая нулевую длительность. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Duration |
abs() |
Возвращает копию этой длительности с положительной длиной. |
Temporal |
addTo |
Добавляет эту длительность к указанному временному объекту. |
static Duration |
between |
Получает Duration, представляющий длительность между двумя временными объектами. |
int |
compareTo |
Сравнивает эту длительность с указанным Duration. |
Duration |
dividedBy |
Возвращает копию этой длительности, разделённую на указанное значение. |
long |
dividedBy |
Возвращает число полных вхождений указанной Duration в эту Duration. |
boolean |
equals |
Проверяет, равна ли эта длительность указанному Duration. |
static Duration |
from |
Получает экземпляр Duration из временной величины. |
long |
get |
Возвращает значение запрошенной единицы измерения. |
int |
getNano() |
Возвращает количество наносекунд в секунде этой длительности. |
long |
getSeconds() |
Возвращает количество секунд в этой длительности. |
List |
getUnits() |
Возвращает набор единиц измерения, поддерживаемых этой длительностью. |
int |
hashCode() |
Хеш-код этой длительности. |
boolean |
isNegative() |
Проверяет, является ли эта длительность отрицательной, исключая ноль. |
boolean |
isPositive() |
Проверяет, является ли эта длительность положительной, исключая ноль. |
boolean |
isZero() |
Проверяет, равна ли длина этой длительности нулю. |
Duration |
minus |
Возвращает копию этой длительности с вычтенной указанной длительностью. |
Duration |
minus |
Возвращает копию этой длительности с вычтенной указанной длительностью. |
Duration |
minusDays |
Возвращает копию этой длительности с вычтенным указанным количеством стандартных 24-часовых дней. |
Duration |
minusHours |
Возвращает копию этой длительности с вычтенным указанным количеством часов. |
Duration |
minusMillis |
Возвращает копию этой длительности с вычтенным указанным количеством миллисекунд. |
Duration |
minusMinutes |
Возвращает копию этой длительности с вычтенным указанным количеством минут. |
Duration |
minusNanos |
Возвращает копию этой длительности с вычтенным указанным количеством наносекунд. |
Duration |
minusSeconds |
Возвращает копию этой длительности с вычтенным указанным количеством секунд. |
Duration |
multipliedBy |
Возвращает копию этой длительности, умноженную на скаляр. |
Duration |
negated() |
Возвращает копию этой длительности с противоположной длиной. |
static Duration |
of |
Получает Duration, представляющий величину в указанной единице измерения. |
static Duration |
ofDays |
Получает Duration, представляющий количество стандартных 24-часовых дней. |
static Duration |
ofHours |
Получает Duration, представляющий количество стандартных часов. |
static Duration |
ofMillis |
Получает Duration, представляющий количество миллисекунд. |
static Duration |
ofMinutes |
Получает Duration, представляющий количество стандартных минут. |
static Duration |
ofNanos |
Получает Duration, представляющий количество наносекунд. |
static Duration |
ofSeconds |
Получает Duration, представляющий количество секунд. |
static Duration |
ofSeconds |
Получает Duration, представляющий количество секунд и поправку в наносекундах. |
static Duration |
parse |
Получает Duration из текстовой строки, например PnDTnHnMn.nS. |
Duration |
plus |
Возвращает копию этой длительности с добавленной указанной длительностью. |
Duration |
plus |
Возвращает копию этой длительности с добавленной указанной длительностью. |
Duration |
plusDays |
Возвращает копию этой длительности с добавленным указанным количеством стандартных 24-часовых дней. |
Duration |
plusHours |
Возвращает копию этой длительности с добавленным указанным количеством часов. |
Duration |
plusMillis |
Возвращает копию этой длительности с добавленным указанным количеством миллисекунд. |
Duration |
plusMinutes |
Возвращает копию этой длительности с добавленным указанным количеством минут. |
Duration |
plusNanos |
Возвращает копию этой длительности с добавленным указанным количеством наносекунд. |
Duration |
plusSeconds |
Возвращает копию этой длительности с добавленным указанным количеством секунд. |
Temporal |
subtractFrom |
Вычитает эту длительность из указанного временного объекта. |
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 |
Возвращает копию этого Duration, усечённую до указанной единицы измерения. |
Duration |
withNanos |
Возвращает копию этой длительности с указанным количеством наносекунд в секунде. |
Duration |
withSeconds |
Возвращает копию этой длительности с указанным количеством секунд. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
ZERO
public static final Duration ZERO
MIN
public static final Duration MIN
Duration, равное Long.MIN_VALUE секундам.- Примечание к API:
- Эта константа представляет наименьший возможный экземпляр
Duration. ПосколькуDurationимеет направленность, наименьшая возможная длительность является отрицательной. Константа предназначена для использования в качестве маркера или в тестах. При выполнении арифметических операций сMINследует соблюдать осторожность, так как существует высокий риск возникновения исключенияArithmeticExceptionилиDateTimeException. - Начиная с версии:
- 26
MAX
public static final Duration MAX
Duration, равное Long.MAX_VALUE секундам и 999,999,999 наносекундам.- Примечание к API:
- Эта константа представляет наибольший возможный экземпляр
Duration. Константа предназначена для использования в качестве маркера или в тестах. При выполнении арифметических операций сMAXследует соблюдать осторожность, так как существует высокий риск возникновения исключенияArithmeticExceptionилиDateTimeException. - Начиная с версии:
- 26
Подробное описание методов
ofDays
public static Duration ofDays(long days)
Duration, представляющую заданное количество стандартных суток продолжительностью 24 часа. Количество секунд вычисляется на основе стандартного определения суток, согласно которому сутки составляют 86 400 секунд, то есть 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 «минус» или «плюс». Если указан знак минус, вся длительность становится отрицательной. Далее следует латинская буква 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 3,600 seconds) "P2D" -- parses as "2 days" (where a day is 24 hours or 86,400 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)
Количество суток умножается на 86 400, чтобы получить количество секунд для прибавления. Расчет основан на стандартном определении суток как 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)
Количество суток умножается на 86 400, чтобы получить количество секунд для вычитания. Расчет основан на стандартном определении суток как 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)
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
divisor— значение, на которое делится длительность; положительное или отрицательное, не null - Возвращает:
- количество целых раз, округлённое к нулю, которое указанная
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()
Возвращает общее количество дней в длительности, деля число секунд на 86 400. В основе лежит стандартное определение дня как 24 часов.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Возвращает:
- количество дней в длительности; может быть отрицательным
toHours
public long toHours()
Возвращает общее количество часов в длительности, деля число секунд на 3 600.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Возвращает:
- количество часов в длительности; может быть отрицательным
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()
Возвращает общее количество дней в длительности, деля число секунд на 86 400. В основе лежит стандартное определение дня как 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. Сравнение выполняется на основе общей продолжительности длительностей.
hashCode
toString
public String toString()
PT8H6M12.345S. Формат возвращаемой строки: PTnHnMnS, где n — соответствующая часть длительности в часах, минутах или секундах. Доли секунды указываются после десятичной точки в секции секунд. Секции с нулевым значением опускаются. Часы, минуты и секунды всегда имеют одинаковый знак.
Примеры:
"20.345 seconds" -- "PT20.345S" "15 minutes" (15 * 60 seconds) -- "PT15M" "10 hours" (10 * 3,600 seconds) -- "PT10H" "2 days" (2 * 86,400 seconds) -- "PT48H"Обратите внимание: кратные 24 часам не выводятся в виде дней, чтобы избежать путаницы с
Period.
© 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.