Класс 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 в 1-м квартале стандартного года, от 1 до 91 в 1-м квартале високосного года, от 1 до 91 во 2-м квартале и от 1 до 92 в 3-м и 4-м кварталах.
День квартала можно вычислить только если доступны день года, месяц и год.
При установке этого поля значение может быть частично гибким, принимая любое значение от 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 до 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 недели, то дата будет в первой неделе следующего года, основанного на неделе.
Этот элемент является неизменяемым и потокобезопасным синглетоном.
QUARTER_YEARS
public static final TemporalUnit QUARTER_YEARS
365.2425 Days. Этот элемент является неизменяемым и потокобезопасным синглетоном.
© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/temporal/IsoFields.html