Spec-Zone.ru › OpenJDK 8

Интерфейс TemporalField

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

public interface TemporalField

Поле даты и времени, например, месяц года или час минуты.

Дата и время выражаются с помощью полей, которые разбивают временную шкалу на что-то осмысленное для людей. Реализации этого интерфейса представляют эти поля.

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

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

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

Методы

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

Возвращает копию указанного временного объекта со значением этого поля, установленным.

TemporalUnit getBaseUnit()

Получает единицу, в которой измеряется поле.

default String getDisplayName(Locale locale)

Получает отображаемое имя поля в запрошенном языке.

long getFrom(TemporalAccessor temporal)

Получает значение этого поля из указанного временного объекта.

TemporalUnit getRangeUnit()

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

boolean isDateBased()

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

boolean isSupportedBy(TemporalAccessor temporal)

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

boolean isTimeBased()

Получает диапазон допустимых значений для поля.

ValueRange range()

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

ValueRange rangeRefinedBy(TemporalAccessor temporal)

Разрешает это поле, чтобы предоставить более простой альтернативный или дату.

default TemporalAccessor resolve(Map<TemporalField,Long> fieldValues, TemporalAccessor partialTemporal, ResolverStyle resolverStyle)

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

Методы

getDisplayName

default String getDisplayName(Locale locale)

Получает отображаемое имя поля в запрошенном языке.

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

Реализация по умолчанию должна проверить, что язык не равен null, и вернуть toString().

Параметры:
locale - используемый язык, не null
Возвращает:
отображаемое имя для языка или подходящую по умолчанию, не null

getBaseUnit

TemporalUnit getBaseUnit()

Получает единицу измерения поля.

Единица поля — это период, изменяющийся в диапазоне. Например, в поле 'MonthOfYear' единицей является 'Months'. См. также getRangeUnit().

Возвращает:
единицу, определяющую базовую единицу поля, не null

getRangeUnit

TemporalUnit getRangeUnit()

Получает диапазон, в котором ограничено поле.

Диапазон поля — это период, в пределах которого изменяется поле. Например, в поле 'MonthOfYear' диапазон — 'Years'. См. также getBaseUnit().

Диапазон никогда не равен null. Например, поле 'Year' является сокращением для 'YearOfForever'. Следовательно, оно имеет единицу 'Years' и диапазон 'Forever'.

Возвращает:
единицу, определяющую диапазон поля, не null

range

ValueRange range()

Получает диапазон допустимых значений для поля.

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

Обратите внимание, что результат описывает только минимальное и максимальное допустимые значения, и не стоит извлекать из них слишком много информации. Например, в диапазоне могут быть значения, недопустимые для поля.

Возвращает:
диапазон допустимых значений для поля, не null

isDateBased

boolean isDateBased()

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

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

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

isTimeBased

boolean isTimeBased()

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

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

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

isSupportedBy

boolean isSupportedBy(TemporalAccessor temporal)

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

Это определяет, поддерживает ли временной аксессор это поле. Если это возвращает false, то от временного объекта нельзя запросить это поле.

Существует два эквивалентных способа использования этого метода. Первый — вызвать этот метод непосредственно. Второй — использовать TemporalAccessor.isSupported(TemporalField):

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

Реализации должны определять, поддерживаются ли они с помощью полей, доступных в ChronoField.

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

rangeRefinedBy

ValueRange rangeRefinedBy(TemporalAccessor temporal)

Получить диапазон допустимых значений для этого поля с использованием временного объекта для уточнения результата.

Это использует временной объект для нахождения диапазона допустимых значений для поля. Это аналогично range(), но этот метод уточняет результат с помощью временного объекта. Например, если поле DAY_OF_MONTH, метод range не точен, так как существует четыре возможных длины месяца: 28, 29, 30 и 31 день. Использование этого метода с датой позволяет сделать диапазон точным, возвращая только один из этих четырех вариантов.

Существует два эквивалентных способа использования этого метода. Первый — вызвать этот метод непосредственно. Второй — использовать TemporalAccessor.range(TemporalField):

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

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

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

getFrom

long getFrom(TemporalAccessor temporal)

Получает значение этого поля из указанного временного объекта.

Это запрашивает значение этого поля у временного объекта.

Существует два эквивалентных способа использования этого метода. Первый — вызвать этот метод непосредственно. Второй — использовать TemporalAccessor.getLong(TemporalField) (или TemporalAccessor.get(TemporalField)):

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

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

Параметры:
temporal - временной объект для запроса, не null
Возвращает:
значение этого поля, не null
Использует:
DateTimeException - если значение для поля получить невозможно
UnsupportedTemporalTypeException - если поле не поддерживается временным объектом
ArithmeticException - если происходит переполнение чисел

adjustInto

<R extends Temporal> R adjustInto(R temporal,
                                  long newValue)

Возвращает копию указанного временного объекта со значением этого поля, установленным.

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

В некоторых случаях изменение поля не определено полностью. Например, если целевой объект — дата, представляющая 31 января, а затем изменяется месяц на февраль, то это неясно. В таких случаях реализация отвечает за решение результата. Как правило, она выберет предыдущую допустимую дату, что в данном примере будет последним допустимым днём февраля.

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

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

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

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

Параметры типов:
R - тип временного объекта
Параметры:
temporal - временной объект для корректировки, не null
newValue - новое значение поля
Возвращает:
скорректированный временной объект, не null
Использует:
DateTimeException - если поле нельзя установить
UnsupportedTemporalTypeException - если поле не поддерживается временным объектом
ArithmeticException - если происходит переполнение чисел

resolve

default TemporalAccessor resolve(Map<TemporalField,Long> fieldValues,
                                 TemporalAccessor partialTemporal,
                                 ResolverStyle resolverStyle)

Разрешает это поле, чтобы предоставить более простую альтернативу или дату.

Этот метод вызывается во время фазы разрешения разбора. Он предназначен для того, чтобы позволить полям, определённым приложением, упрощаться в более стандартные поля, например, те, что в ChronoField, или в дату.

Приложения обычно не должны вызывать этот метод непосредственно.

Требования к реализации:
Если реализация представляет поле, которое можно упростить или объединить с другими, то этот метод должен быть реализован.

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

Разрешение поля будет заключаться в просмотре значения этого поля и, возможно, других полей и либо обновлении карты с более простым значением, например, ChronoField, или возвращении полного ChronoLocalDate. Если разрешение успешно, код должен удалить из карты все поля, которые были разрешены, включая это поле.

Например, класс IsoFields содержит поля четверть года и день четверти. Реализация этого метода в этом классе разрешает два поля плюс поле YEAR в полное LocalDate. Метод разрешения удалит все три поля из карты перед возвращением LocalDate.

Частично завершенный временной объект используется для запроса хронологии и зоны. Как правило, потребуется только хронология. Запрос элементов, отличных от зоны или хронологии, не определен и не должен использоваться. Поведение других методов, таких как get, getLong, range и isSupported, является непредсказуемым, а результаты неопределенными.

Если разрешение должно быть возможным, но данные некорректны, стиль разрешителя должен использоваться для определения подходящей степени снисходительности, что может потребовать выброса DateTimeException или ArithmeticException. Если разрешение невозможно, метод resolve должен вернуть null.

При разрешении временных полей карта будет изменена, а возвращаемое значение будет null. При разрешении полей даты дата обычно возвращается из метода, а карта изменяется для удаления разрешенных полей. Однако также допускается, что поля даты будут разрешены в другие ChronoField экземпляры, которые могут создать дату, например, EPOCH_DAY.

Не все TemporalAccessor реализации принимаются в качестве возвращаемых значений. Реализации, которые вызывают этот метод, должны принимать ChronoLocalDate, ChronoLocalDateTime, ChronoZonedDateTime и LocalTime.

Реализация по умолчанию должна возвращать null.

Параметры:
fieldValues - карта полей к значениям, которая может быть обновлена, не null
partialTemporal - частично завершенный временной объект для запроса зоны и хронологии; запросы других элементов не определены и не рекомендуются, не null
resolverStyle - запрашиваемый тип разрешения, не null
Возвращает:
разрешенный временной объект; null, если разрешение только изменило карту или разрешение не произошло
Исключения:
ArithmeticException - если происходит переполнение чисел
DateTimeException - если разрешение приводит к ошибке. Это не должно выбрасываться при запросе поля во временном объекте без предварительной проверки, поддерживается ли оно

toString

String toString()

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

Должно быть в формате 'BaseOfRange', например, 'MonthOfYear', если поле не имеет диапазона FOREVER, в противном случае указывается только базовая единица, например, 'Year' или 'Era'.

Переопределяет:
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