Spec-Zone.ru › OpenJDK 21

Класс 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, игнорируя фактический диапазон, основанный на годе и квартале. Если день квартала превышает фактический диапазон на один день, то полученная дата на один день позже. Если день квартала превышает фактический диапазон на два дня, то полученная дата на два дня позже.

В мягком режиме валидируется только год. Результирующая дата вычисляется в соответствии со следующим трёхэтапным подходом. Сначала создайте дату на первое число января в указанном году. Затем возьмите квартал, вычтите один, добавьте количество кварталов к дате. Наконец, возьмите день квартала, вычтите один, добавьте количество дней к дате.

Эта единица — неизменяемый и потокобезопасный синглтон.

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
Единица, представляющая концепцию квартала года. Для календарной системы ISO она равна 3 месяцам. Приблизительная продолжительность квартала года составляет одну четвёртую от 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

Spec-Zone.ru

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