Класс IsoFields
public final class IsoFields extends Object
Этот класс определяет поля и единицы измерения, специфичные для календарной системы 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, начинающаяся в понедельник и содержащая не менее 4 дней нового года.
- Если 1 января приходится на понедельник, неделя 1 начинается 1 января
- Если 1 января приходится на вторник, неделя 1 начинается 31 декабря предыдущего стандартного года
- Если 1 января приходится на среду, неделя 1 начинается 30 декабря предыдущего стандартного года
- Если 1 января приходится на четверг, неделя 1 начинается 29 декабря предыдущего стандартного года
- Если 1 января приходится на пятницу, неделя 1 начинается 4 января
- Если 1 января приходится на субботу, неделя 1 начинается 3 января
- Если 1 января приходится на воскресенье, неделя 1 начинается 2 января
Например:
| Дата | День недели | Значения полей |
|---|---|---|
| 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 |
Поле, представляющее неделю года-недели. |
Краткое описание методов
Подробное описание полей
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 без учета фактического диапазона для данного года и квартала. Если значение дня квартала превышает фактический диапазон на один день, результирующая дата будет на один день позже. Если значение дня квартала превышает фактический диапазон на два дня, результирующая дата будет на два дня позже.
В нестрогом режиме только год проверяется на соответствие диапазону допустимых значений. Результирующая дата вычисляется так же, как при следующем трехэтапном подходе. Сначала создается дата на первое января указанного года. Затем из квартала года вычитается единица, и полученное количество кварталов прибавляется к дате. Наконец, из дня квартала вычитается единица, и полученное количество дней прибавляется к дате.
Эта единица измерения представляет собой неизменяемый и потокобезопасный singleton.
QUARTER_OF_YEAR
public static final TemporalField QUARTER_OF_YEAR
Это поле позволяет получать и задавать значение квартала года. Значения квартала года находятся в диапазоне от 1 до 4.
Квартал года можно вычислить, только если доступен месяц года.
На этапе разрешения при разборе из года, квартала года и дня квартала можно создать дату. Подробности см. в описании DAY_OF_QUARTER.
Эта единица измерения представляет собой неизменяемый и потокобезопасный singleton.
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, все лишние недели прибавляются к результирующей дате или вычитаются из нее.
Эта единица измерения представляет собой неизменяемый и потокобезопасный singleton.
WEEK_BASED_YEAR
public static final TemporalField WEEK_BASED_YEAR
Это поле позволяет получать и задавать значение года-недели.
Диапазон поля соответствует LocalDate.MAX и LocalDate.MIN.
На этапе разрешения при разборе из года-недели, недели года-недели и дня недели можно создать дату. Подробности см. в описании WEEK_OF_WEEK_BASED_YEAR.
Эта единица измерения представляет собой неизменяемый и потокобезопасный singleton.
WEEK_BASED_YEARS
public static final TemporalUnit WEEK_BASED_YEARS
Она позволяет прибавлять к дате или вычитать из нее заданное количество лет-недель. Эта единица измерения равна 52 или 53 неделям. Расчетная продолжительность года-недели совпадает с продолжительностью стандартного года ISO при 365.2425 Days.
При сложении указанное количество лет-недель прибавляется к текущему значению поля года-недели. Если в получившемся году-неделе всего 52 недели, дата приходится на неделю 1 следующего года-недели.
Эта единица измерения представляет собой неизменяемый и потокобезопасный singleton.
QUARTER_YEARS
public static final TemporalUnit QUARTER_YEARS
365.2425 Days. Эта единица измерения представляет собой неизменяемый и потокобезопасный singleton.
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/temporal/IsoFields.html