Spec-Zone.ru › OpenJDK 8

Класс 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 - квартал года
  • 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 в 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, 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.

Spec-Zone.ru

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