Spec-Zone.ru › OpenJDK 24

Интерфейс TemporalUnit

Все известные реализующие классы:
ChronoUnit
public interface TemporalUnit
Единица измерения времени, например, Дни или Часы.

Измерение времени основано на единицах, таких как годы, месяцы, дни, часы, минуты и секунды. Реализации этого интерфейса представляют эти единицы.

Экземпляр этого интерфейса представляет саму единицу, а не количество единиц. Смотрите Period для класса, представляющего количество в терминах общих единиц.

Наиболее часто используемые единицы определены в ChronoUnit. Дополнительные единицы предоставляются в IsoFields. Единицы также могут быть написаны кодом приложения путем реализации этого интерфейса.

Единица работает с использованием двойной отправки. Клиентский код вызывает методы на объекте времени, таком как LocalDateTime, которые проверяют, является ли единица ChronoUnit. Если это так, то объект времени должен обработать ее. В противном случае вызов метода повторно отправляется в соответствующий метод в этом интерфейсе.

Требования к реализации:
Этот интерфейс должен быть реализован с осторожностью, чтобы гарантировать правильную работу других классов. Все реализуемые классы, которые можно создать, должны быть final, неизменяемыми и потокобезопасными. Рекомендуется использовать перечисление, где это возможно.
С:
1.8

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

Модификатор и тип Метод Описание
<R extends Temporal>
R
addTo(R temporal, long amount)
Возвращает копию указанного временного объекта с добавленным указанным периодом.
long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive)
Вычисляет количество времени между двумя временными объектами.
Duration getDuration()
Получает продолжительность этой единицы, которая может быть приблизительной.
boolean isDateBased()
Проверяет, представляет ли эта единица компонент даты.
boolean isDurationEstimated()
Проверяет, является ли продолжительность единицы приблизительной.
default boolean isSupportedBy(Temporal temporal)
Проверяет, поддерживается ли эта единица указанным временным объектом.
boolean isTimeBased()
Проверяет, представляет ли эта единица компонент времени.
String toString()
Получает описательное имя для единицы.

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

getDuration

Duration getDuration()
Получает длительность данного элемента, которая может быть оценочной.

Все элементы возвращают длительность, измеряемую в стандартных наносекундах с помощью этого метода. Длительность будет положительной и отличной от нуля. Например, час имеет длительность 60 * 60 * 1,000,000,000ns.

Некоторые элементы могут возвращать точную длительность, в то время как другие возвращают оценку. Например, дни имеют оценочную длительность из-за возможности изменения летнего времени. Чтобы определить, является ли длительность оценочной, используйте isDurationEstimated().

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

isDurationEstimated

boolean isDurationEstimated()
Проверяет, является ли длительность элемента оценочной.

Все элементы имеют длительность, однако длительность не всегда точна. Например, дни имеют оценочную длительность из-за возможности изменения летнего времени. Этот метод возвращает true, если длительность является оценочной, и false, если она точная. Обратите внимание, что точность/оценка игнорирует високосные секунды.

Возвращает:
true, если длительность оценочная, false — если точная

isDateBased

boolean isDateBased()
Проверяет, представляет ли данный элемент компонент даты.

Дата является временной, если её можно использовать для определения значения по дате. Она должна иметь длительность, являющуюся целым кратным длительности стандартного дня. Обратите внимание, что для isDateBased() и isTimeBased() допустимо возвращать false, например, при представлении такого элемента, как 36 часов.

Возвращает:
true, если этот элемент является компонентом даты

isTimeBased

boolean isTimeBased()
Проверяет, представляет ли данный элемент компонент времени.

Элемент является временным, если его можно использовать для определения значения по времени. Он должен иметь длительность, кратную длительности стандартного дня без остатка. Обратите внимание, что для isDateBased() и isTimeBased() допустимо возвращать false, например, при представлении такого элемента, как 36 часов.

Возвращает:
true, если этот элемент является компонентом времени

isSupportedBy

default boolean isSupportedBy(Temporal temporal)
Проверяет, поддерживается ли данный элемент указанным временным объектом.

Проверка, что реализуемая дата-время может добавить/вычесть этот элемент. Это можно использовать, чтобы избежать исключения.

Эта реализация по умолчанию получает значение с помощью Temporal.plus(long, TemporalUnit).

Параметры:
temporal — временной объект для проверки, не null
Возвращает:
true, если элемент поддерживается

addTo

<R extends Temporal> R addTo(R temporal, long amount)
Возвращает копию указанного временного объекта с добавленным заданным периодом.

Добавляемый период является кратным этому элементу. Например, этот метод можно использовать для добавления «3 дней» к дате, вызвав этот метод для элемента, представляющего «дни», передав дату и период «3». Добавляемый период может быть отрицательным, что эквивалентно вычитанию.

Есть два эквивалентных способа использования этого метода. Первый — вызвать этот метод напрямую. Второй — использовать Temporal.plus(long, TemporalUnit):

   // these two lines are equivalent, but the second approach is recommended
   temporal = thisUnit.addTo(temporal);
   temporal = temporal.plus(thisUnit);
 
Рекомендуется использовать второй подход, plus(TemporalUnit), так как он более понятен в коде.

Реализации должны выполнять любые запросы или вычисления, используя элементы, доступные в ChronoUnit, или поля, доступные в ChronoField. Если элемент не поддерживается, должно быть выброшено UnsupportedTemporalTypeException.

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

Тип параметров:
R — тип временного объекта
Параметры:
temporal — временной объект для корректировки, не null
amount — количество этого элемента для добавления, положительное или отрицательное
Возвращает:
откорректированный временной объект, не null
Исключения:
DateTimeException — если количество не может быть добавлено
UnsupportedTemporalTypeException — если элемент не поддерживается временным объектом

between

long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive)
Вычисляет временной промежуток между двумя временными объектами.

Вычисляет количество в терминах этого элемента. Начальная и конечная точки предоставляются как временные объекты и должны быть совместимого типа. Реализация преобразует вторую точку в экземпляр первого типа перед вычислением количества. Результат будет отрицательным, если конечная точка находится до начальной. Например, количество часов между двумя временными объектами можно вычислить, используя HOURS.between(startTime, endTime).

Вычисление возвращает целое число, представляющее количество полных элементов между двумя временными точками. Например, количество часов между временами 11:30 и 13:29 будет только один час, так как это на одну минуту меньше двух часов.

Есть два эквивалентных способа использования этого метода. Первый — вызвать этот метод напрямую. Второй — использовать Temporal.until(Temporal, TemporalUnit):

   // these two lines are equivalent
   between = thisUnit.between(start, end);
   between = start.until(end, thisUnit);
 
Выбор должен быть сделан на основе того, что делает код более читабельным.

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

  long daysBetween = DAYS.between(start, end);
  // or alternatively
  long daysBetween = start.until(end, DAYS);
 

Реализации должны выполнять любые запросы или вычисления, используя элементы, доступные в ChronoUnit, или поля, доступные в ChronoField. Если элемент не поддерживается, должно быть выброшено UnsupportedTemporalTypeException. Реализации не должны изменять указанные временные объекты.

Требования к реализации:
Реализации должны начать с проверки, имеют ли два временных объекта один и тот же тип, используя getClass(). Если нет, результат должен быть получен вызовом temporal1Inclusive.until(temporal2Exclusive, this).
Параметры:
temporal1Inclusive — базовый временной объект, не null
temporal2Exclusive — другой временной объект, исключая, не null
Возвращает:
количество времени между temporal1Inclusive и temporal2Exclusive в терминах этого элемента; положительно, если temporal2Exclusive позже, чем temporal1Inclusive, отрицательно, если раньше
Исключения:
DateTimeException — если количество не может быть вычислено или конечная временная точка не может быть преобразована в тот же тип, что и начальная временная точка
UnsupportedTemporalTypeException — если элемент не поддерживается временным объектом
ArithmeticException — если происходит переполнение чисел

toString

String toString()
Получает описательное имя элемента.

Оно должно быть во множественном числе и с заглавной буквой, например, 'Дни' или 'Минуты'.

Переопределяет:
toString в классе Object
Возвращает:
название этого элемента, не null

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/temporal/TemporalUnit.html

Spec-Zone.ru

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