Класс IsoFields
- java.lang.Object
-
- java.time.temporal.IsoFields
public final class IsoFields extends Object
Поля и единицы, специфичные для календарной системы ISO-8601, включая квартал года и год, основанный на неделе.
Этот класс определяет поля и единицы, специфичные для календарной системы ISO.
Квартал года
Стандарт ISO-8601 основан на стандартном гражданском году в 12 месяцев. Он обычно делится на четыре квартала, часто сокращённые как К1, К2, К3 и К4.
Январь, февраль и март относятся к К1. Апрель, май и июнь относятся к К2. Июль, август и сентябрь относятся к К3. Октябрь, ноябрь и декабрь относятся к К4.
Полная дата выражается с помощью трёх полей:
-
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 TemporalField |
DAY_OF_QUARTER |
Поле, представляющее день квартала. |
static TemporalField |
QUARTER_OF_YEAR |
Поле, представляющее квартал года. |
static TemporalUnit |
QUARTER_YEARS |
Единица, представляющая концепцию квартала года. |
static TemporalField |
WEEK_BASED_YEAR |
Поле, представляющее год, основанный на неделе. |
static TemporalUnit |
WEEK_BASED_YEARS |
Единица, представляющая годы, основанные на неделях, для целей сложения и вычитания. |
static TemporalField |
WEEK_OF_WEEK_BASED_YEAR |
Поле, представляющее неделю года, основанного на неделе. |
Методы
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Подробности полей
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, игнорируя фактический диапазон, основанный на году и квартале. Если день квартала выходит за фактический диапазон на один день, то полученная дата смещается на один день вперед. Если день квартала выходит за фактический диапазон на два дня, то полученная дата смещается на два дня вперед.
В мягком режиме проверяется только год на соответствие допустимому диапазону значений. Результирующая дата рассчитывается аналогично следующему трёхэтапному подходу. Во-первых, создаётся дата 1 января в запрошенном году. Затем берется квартал года, вычитается единица и к дате добавляется соответствующее количество кварталов. Наконец, берется день квартала, вычитается единица и к дате добавляется соответствующее количество дней.
Эта единица является неизменяемым и потокобезопасным синглтоном.
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.
Эта единица является неизменяемым и потокобезопасным синглтоном.
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/temporal/IsoFields.html