Spec-Zone.ru › OpenJDK 17

Класс 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
Поле, представляющее неделю года, основанного на неделях.

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

Методы, объявленные в классе 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 в Q1 стандартного года, от 1 до 91 в Q1 високосного года, от 1 до 91 в Q2 и от 1 до 92 в Q3 и Q4.

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

При установке этого поля значение может быть частично допускаемым, принимая любое значение от 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, 2021, 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/17/docs/api/java.base/java/time/temporal/IsoFields.html

Spec-Zone.ru

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