Spec-Zone.ru › OpenJDK 27

Класс IsoFields

java.lang.Object
java.time.temporal.IsoFields
public final class IsoFields extends Object
Поля и единицы измерения, специфичные для календарной системы ISO-8601, включая квартал года и недельный год.

Этот класс определяет поля и единицы измерения, специфичные для календарной системы ISO.

Квартал года

Стандарт ISO-8601 основан на стандартном гражданском календарном годе из 12 месяцев. Обычно он делится на четыре квартала, часто обозначаемые как Q1, Q2, Q3 и Q4.

Январь, февраль и март относятся к Q1. Апрель, май и июнь относятся к Q2. Июль, август и сентябрь относятся к Q3. Октябрь, ноябрь и декабрь относятся к Q4.

Полная дата выражается с помощью трёх полей:

  • DAY_OF_QUARTER — день квартала, от 1 до 90, 91 или 92
  • QUARTER_OF_YEAR — квартал года, от 1 до 4
  • YEAR — стандартный год ISO

Недельные годы

Изначально стандарт ISO-8601 предназначался для обмена данными и определял строковый формат дат и времени. Однако он также определяет альтернативный способ представления даты на основе понятия недельного года.

Дата выражается с помощью трёх полей:

  • DAY_OF_WEEK — стандартное поле, определяющее день недели от понедельника (1) до воскресенья (7)
  • WEEK_OF_WEEK_BASED_YEAR — неделя в недельном году
  • WEEK_BASED_YEAR — недельный год
Сам недельный год определяется относительно стандартного пролептического года ISO. Он отличается от стандартного года тем, что всегда начинается в понедельник.

Первая неделя недельного года — это первая неделя стандартного года ISO, начинающаяся в понедельник и содержащая не менее 4 дней нового года.

  • Если 1 января приходится на понедельник, неделя 1 начинается 1 января
  • Если 1 января приходится на вторник, неделя 1 начинается 31 декабря предыдущего стандартного года
  • Если 1 января приходится на среду, неделя 1 начинается 30 декабря предыдущего стандартного года
  • Если 1 января приходится на четверг, неделя 1 начинается 29 декабря предыдущего стандартного года
  • Если 1 января приходится на пятницу, неделя 1 начинается 4 января
  • Если 1 января приходится на субботу, неделя 1 начинается 3 января
  • Если 1 января приходится на воскресенье, неделя 1 начинается 2 января
В большинстве недельных годов 52 недели, однако иногда бывает 53 недели.

Например:

Примеры недельных годов
Дата День недели Значения полей
2008-12-28 Воскресенье Неделя 52 недельного года 2008
2008-12-29 Понедельник Неделя 1 недельного года 2009
2008-12-31 Среда Неделя 1 недельного года 2009
2009-01-01 Четверг Неделя 1 недельного года 2009
2009-01-04 Воскресенье Неделя 1 недельного года 2009
2009-01-05 Понедельник Неделя 2 недельного года 2009
Требования к реализации:

Этот класс является неизменяемым и потокобезопасным.

Начиная с:
1.8

Краткое описание полей

Модификатор и тип Поле Описание
static final TemporalField DAY_OF_QUARTER
Поле, представляющее день квартала.
static final TemporalField QUARTER_OF_YEAR
Поле, представляющее квартал года.
static final TemporalUnit QUARTER_YEARS
Единица измерения, представляющая понятие квартала года.
static final TemporalField WEEK_BASED_YEAR
Поле, представляющее недельный год.
static final TemporalUnit WEEK_BASED_YEARS
Единица измерения, представляющая недельные годы для целей сложения и вычитания.
static final TemporalField WEEK_OF_WEEK_BASED_YEAR
Поле, представляющее неделю недельного года.

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

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.

Подробное описание полей

DAY_OF_QUARTER

public static final TemporalField DAY_OF_QUARTER
Поле, представляющее день квартала.

Это поле позволяет получать и задавать значение дня квартала. День квартала принимает значения от 1 до 90 в Q1 обычного года, от 1 до 91 в Q1 високосного года, от 1 до 91 в Q2 и от 1 до 92 в Q3 и Q4.

День квартала можно вычислить только при наличии дня года, месяца года и года.

При задании этого поля допускается частично нестрогое значение в диапазоне от 1 до 92. Если в квартале меньше 92 дней, то день 92, а иногда и день 91, относится к следующему кварталу.

На этапе разрешения при разборе дату можно создать на основе года, квартала года и дня квартала.

В строгом режиме все три поля проверяются на соответствие диапазонам допустимых значений. Поле дня квартала проверяется в диапазоне от 1 до 90, 91 или 92 в зависимости от года и квартала.

В интеллектуальном режиме все три поля проверяются на соответствие диапазонам допустимых значений. Поле дня квартала проверяется в диапазоне от 1 до 92 без учёта фактического диапазона, основанного на годе и квартале. Если день квартала превышает фактический диапазон на один день, результирующая дата будет на один день позже. Если день квартала превышает фактический диапазон на два дня, результирующая дата будет на два дня позже.

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

Эта единица измерения является неизменяемым и потокобезопасным синглтоном.

QUARTER_OF_YEAR

public static final TemporalField QUARTER_OF_YEAR
Поле, представляющее квартал года.

Это поле позволяет получать и задавать значение квартала года. Квартал года принимает значения от 1 до 4.

Квартал года можно вычислить только при наличии месяца года.

На этапе разрешения при разборе дату можно создать на основе года, квартала года и дня квартала. Подробности см. в разделе DAY_OF_QUARTER.

Эта единица измерения является неизменяемым и потокобезопасным синглтоном.

WEEK_OF_WEEK_BASED_YEAR

public static final TemporalField WEEK_OF_WEEK_BASED_YEAR
Поле, представляющее неделю недельного года.

Это поле позволяет получать и задавать значение недели недельного года. Номер недели недельного года принимает значения от 1 до 52 или 53, если в недельном году 53 недели.

На этапе разрешения при разборе дату можно создать на основе недельного года, недели недельного года и дня недели.

В строгом режиме все три поля проверяются на соответствие диапазонам допустимых значений. Поле недели недельного года проверяется в диапазоне от 1 до 52 или 53 в зависимости от недельного года.

В интеллектуальном режиме все три поля проверяются на соответствие диапазонам допустимых значений. Поле недели недельного года проверяется в диапазоне от 1 до 53 без учёта недельного года. Если номер недели недельного года равен 53, но в недельном году всего 52 недели, результирующая дата приходится на неделю 1 следующего недельного года.

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

Эта единица измерения является неизменяемым и потокобезопасным синглтоном.

WEEK_BASED_YEAR

public static final TemporalField WEEK_BASED_YEAR
Поле, представляющее недельный год.

Это поле позволяет получать и задавать значение недельного года.

Диапазон значений этого поля совпадает с диапазоном LocalDate.MAX и LocalDate.MIN.

На этапе разрешения при разборе дату можно создать на основе недельного года, недели недельного года и дня недели. Подробности см. в разделе WEEK_OF_WEEK_BASED_YEAR.

Эта единица измерения является неизменяемым и потокобезопасным синглтоном.

WEEK_BASED_YEARS

public static final TemporalUnit WEEK_BASED_YEARS
Единица измерения, представляющая недельные годы для целей сложения и вычитания.

Она позволяет прибавлять к дате или вычитать из неё некоторое количество недельных лет. Единица измерения равна 52 или 53 неделям. Расчётная длительность недельного года совпадает с длительностью стандартного года ISO в 365.2425 Days.

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

Эта единица измерения является неизменяемым и потокобезопасным синглтоном.

QUARTER_YEARS

public static final TemporalUnit QUARTER_YEARS
Единица измерения, представляющая понятие квартала года. В календарной системе ISO она равна 3 месяцам. Расчётная длительность квартала года составляет одну четверть 365.2425 Days.

Эта единица измерения является неизменяемым и потокобезопасным синглтоном.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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