Spec-Zone.ru › OpenJDK 8

Интерфейс TemporalUnit

Все известные реализующие классы:
ChronoUnit

public interface TemporalUnit

Единица измерения времени, например, Дни или Часы.

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

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

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

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

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

Методы

Модификатор и тип Метод и описание
<R extends Temporal>
R
addTo(R temporal, long amount)

Возвращает копию указанного объекта temporal с добавленным указанным периодом.

long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive)

Вычисляет количество времени между двумя объектами temporal.

Duration getDuration()

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

boolean isDateBased()

Проверяет, представляет ли эта единица компонент даты.

boolean isDurationEstimated()

Проверяет, является ли продолжительность единицы приблизительной.

default boolean isSupportedBy(Temporal 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.

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

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

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

addTo

<R extends Temporal> R addTo(R temporal,
                             long amount)

Возвращает копию указанного объекта temporal с добавленным указанным периодом.

Добавляемый период является кратным этой единице. Например, этот метод можно использовать для добавления «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.

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

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

between

long between(Temporal temporal1Inclusive,
             Temporal temporal2Exclusive)

Вычисляет количество времени между двумя объектами temporal.

Это вычисляет количество в терминах этой единицы. Точки начала и окончания предоставляются как объекты temporal и должны быть совместимых типов. Реализация преобразует второй тип в экземпляр первого типа перед вычислением количества. Результат будет отрицательным, если конец находится перед началом. Например, количество часов между двумя объектами temporal можно вычислить, используя 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. Реализации не должны изменять указанные объекты temporal.

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

toString

String toString()

Получает описательное имя для единицы.

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

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

© 1993, 2020, 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.

Spec-Zone.ru

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