Класс 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, игнорируя фактический диапазон, основанный на годе и квартале. Если день квартала превышает фактический диапазон на один день, то полученная дата на один день позже. Если день квартала превышает фактический диапазон на два дня, то полученная дата на два дня позже.
В мягком режиме валидируется только год. Результирующая дата вычисляется в соответствии со следующим трёхэтапным подходом. Сначала создайте дату на первое число января в указанном году. Затем возьмите квартал, вычтите один, добавьте количество кварталов к дате. Наконец, возьмите день квартала, вычтите один, добавьте количество дней к дате.
Эта единица — неизменяемый и потокобезопасный синглтон.
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, 2023, 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/21/docs/api/java.base/java/time/temporal/IsoFields.html