Spec-Zone.ru › OpenJDK 17

Интерфейс 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, 2021, 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/17/docs/api/java.base/java/time/temporal/TemporalUnit.html

Spec-Zone.ru

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