Spec-Zone.ru › OpenJDK 25

Класс WeekFields

java.lang.Object
java.time.temporal.WeekFields
Все реализованные интерфейсы:
Serializable
public final class WeekFields extends Object implements Serializable
Локализованные определения полей дня недели, недели месяца и недели года.

Стандартная неделя состоит из семи дней, однако в разных культурах существуют разные определения некоторых других аспектов недели. Этот класс представляет определение недели для предоставления экземпляров TemporalField.

WeekFields предоставляет пять полей: dayOfWeek(), weekOfMonth(), weekOfYear(), weekOfWeekBasedYear() и weekBasedYear(), которые обеспечивают доступ к значениям любого временного объекта.

Вычисления дня недели, недели месяца и недели года основаны на пролептическом годе, месяце года, дне месяца и дне недели по ISO, которые, в свою очередь, основаны на дне эпохи и хронологии. В зависимости от хронологии значения могут не совпадать с годом эры.

Неделя определяется следующими параметрами:

  • Первый день недели. Например, стандарт ISO-8601 считает первым днем недели понедельник.
  • Минимальное количество дней в первой неделе. Например, согласно стандарту ISO-8601, в первой неделе должно быть не менее 4 дней.
Вместе эти два значения позволяют разделить год или месяц на недели.

Неделя месяца

Используется одно поле: неделя месяца. Вычисление гарантирует, что недели не пересекают границы месяца. Месяц делится на периоды, каждый из которых начинается в заданный первый день недели. Самый ранний период называется неделей 0, если в нем меньше минимального количества дней, и неделей 1, если в нем не меньше минимального количества дней.
Примеры WeekFields
Дата День недели Первый день: понедельник
Минимальное количество дней: 4
Первый день: понедельник
Минимальное количество дней: 5
2008-12-31 Среда Неделя 5 декабря 2008 года Неделя 5 декабря 2008 года
2009-01-01 Четверг Неделя 1 января 2009 года Неделя 0 января 2009 года
2009-01-04 Воскресенье Неделя 1 января 2009 года Неделя 0 января 2009 года
2009-01-05 Понедельник Неделя 2 января 2009 года Неделя 1 января 2009 года

Неделя года

Используется одно поле: неделя года. Вычисление гарантирует, что недели не пересекают границы года. Год делится на периоды, каждый из которых начинается в заданный первый день недели. Самый ранний период называется неделей 0, если в нем меньше минимального количества дней, и неделей 1, если в нем не меньше минимального количества дней.

Год на основе недель

Для года на основе недель используются два поля: одно для week-of-week-based-year, другое для week-based-year. В году на основе недель каждая неделя относится только к одному году. Неделя 1 года — это первая неделя, которая начинается в первый день недели и содержит не менее минимального количества дней. Первая и последняя недели года могут включать дни предыдущего или следующего календарного года соответственно.
Примеры WeekFields для года на основе недель
Дата День недели Первый день: понедельник
Минимальное количество дней: 4
Первый день: понедельник
Минимальное количество дней: 5
2008-12-31 Среда Неделя 1 2009 года Неделя 53 2008 года
2009-01-01 Четверг Неделя 1 2009 года Неделя 53 2008 года
2009-01-04 Воскресенье Неделя 1 2009 года Неделя 53 2008 года
2009-01-05 Понедельник Неделя 2 2009 года Неделя 1 2009 года
Требования к реализации:
Этот класс неизменяемый и потокобезопасный.
Начиная с:
1.8
См. также:
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
static final WeekFields ISO
Определение ISO-8601, согласно которому неделя начинается в понедельник, а в первой неделе должно быть не менее 4 дней.
static final WeekFields SUNDAY_START
Распространенное определение недели, согласно которому неделя начинается в воскресенье, а в первой неделе должен быть как минимум 1 день.
static final TemporalUnit WEEK_BASED_YEARS
Единица измерения, представляющая годы на основе недель для выполнения сложения и вычитания.

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

Модификатор и тип Метод Описание
TemporalField dayOfWeek()
Возвращает поле для доступа к дню недели на основе этого WeekFields.
boolean equals(Object object)
Проверяет, равен ли этот WeekFields указанному объекту.
DayOfWeek getFirstDayOfWeek()
Возвращает первый день недели.
int getMinimalDaysInFirstWeek()
Возвращает минимальное количество дней в первой неделе.
int hashCode()
Хеш-код этого WeekFields.
static WeekFields of(DayOfWeek firstDayOfWeek, int minimalDaysInFirstWeek)
Создает экземпляр WeekFields на основе первого дня недели и минимального количества дней.
static WeekFields of(Locale locale)
Создает экземпляр WeekFields, соответствующий локали.
String toString()
Строковое представление этого экземпляра WeekFields.
TemporalField weekBasedYear()
Возвращает поле для доступа к году года на основе недель на основе этого WeekFields.
TemporalField weekOfMonth()
Возвращает поле для доступа к неделе месяца на основе этого WeekFields.
TemporalField weekOfWeekBasedYear()
Возвращает поле для доступа к неделе года на основе недель на основе этого WeekFields.
TemporalField weekOfYear()
Возвращает поле для доступа к неделе года на основе этого WeekFields.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание полей

ISO

public static final WeekFields ISO
Определение ISO-8601, согласно которому неделя начинается в понедельник, а в первой неделе должно быть не менее 4 дней.

Стандарт ISO-8601 определяет календарную систему, основанную на неделях. Для разделения потока дней вместо стандартных понятий года, месяца и дня используются понятия года на основе недель и недели года на основе недель.

Обратите внимание, что первая неделя может начинаться в предыдущем календарном году. Также обратите внимание, что первые несколько дней календарного года могут относиться к году на основе недель, соответствующему предыдущему календарному году.

SUNDAY_START

public static final WeekFields SUNDAY_START
Распространенное определение недели, согласно которому неделя начинается в воскресенье, а в первой неделе должен быть как минимум 1 день.

Определяется как неделя, начинающаяся в воскресенье и содержащая в месяце как минимум 1 день. Это определение недели используется в США и других европейских странах.

WEEK_BASED_YEARS

public static final TemporalUnit WEEK_BASED_YEARS
Единица измерения, представляющая годы на основе недель для выполнения сложения и вычитания.

Эта единица позволяет прибавлять к дате или вычитать из нее количество лет на основе недель. Она равна 52 или 53 неделям. Приблизительная продолжительность года на основе недель совпадает с продолжительностью стандартного года ISO в 365.2425 Days.

Правила сложения прибавляют количество лет на основе недель к существующему значению поля года на основе недель, сохраняя номер недели и день недели, если номер недели не превышает допустимое значение для целевого года. В противном случае устанавливается последняя неделя года с тем же днем недели.

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

Подробное описание методов

of

public static WeekFields of(Locale locale)
Создает экземпляр WeekFields, соответствующий локали.

Будут найдены соответствующие значения, предоставляемые поставщиком данных локализации. Если локаль содержит расширения Unicode «fw» (первый день недели) и/или «rg» (переопределение региона), возвращаемый экземпляр будет отражать значения, заданные этими расширениями. Если заданы и «fw», и «rg», значение из расширения «fw» имеет приоритет над неявным значением из расширения «rg».

Например, пользователи, которым нужна английская локаль, но при этом первый день недели должен соответствовать стандарту ISO-8601, могут вызвать

Locale enIsoLoc = Locale.forLanguageTag("en-u-fw-mon");
WeekFields.of(enIsoLoc).getFirstDayOfWeek(); // returns MONDAY
Параметры:
locale — используемая локаль, не null
Возвращает:
определение недели, не null

of

public static WeekFields of(DayOfWeek firstDayOfWeek, int minimalDaysInFirstWeek)
Создает экземпляр WeekFields на основе первого дня недели и минимального количества дней.

Первый день недели определяет день недели ISO DayOfWeek, который считается днем 1 недели. Минимальное количество дней в первой неделе задает, сколько дней должно приходиться на месяц или год, начиная с первого дня недели, чтобы неделя считалась первой. Значение 1 означает, что первый день месяца или года будет считаться частью первой недели, а значение 7 требует, чтобы все семь дней приходились на новый месяц или год.

Экземпляры WeekFields являются синглтонами: для каждой уникальной комбинации firstDayOfWeek и minimalDaysInFirstWeek будет возвращаться один и тот же экземпляр.

Параметры:
firstDayOfWeek — первый день недели, не null
minimalDaysInFirstWeek — минимальное количество дней в первой неделе, от 1 до 7
Возвращает:
определение недели, не null
Выбрасывает:
IllegalArgumentException — если минимальное количество дней меньше единицы или больше 7

getFirstDayOfWeek

public DayOfWeek getFirstDayOfWeek()
Возвращает первый день недели.

Первый день недели зависит от культуры. Например, в США это воскресенье, а во Франции и согласно стандарту ISO-8601 — понедельник. Этот метод возвращает первый день в виде стандартного перечисления DayOfWeek.

Возвращает:
первый день недели, не null

getMinimalDaysInFirstWeek

public int getMinimalDaysInFirstWeek()
Возвращает минимальное количество дней в первой неделе.

Количество дней, необходимое для определения первой недели месяца или года, зависит от культуры. Например, согласно ISO-8601, перед тем как считать неделю первой, в ней должно быть 4 дня (больше половины недели).

Возвращает:
минимальное количество дней в первой неделе месяца или года, от 1 до 7

dayOfWeek

public TemporalField dayOfWeek()
Возвращает поле для доступа к дню недели на основе этого WeekFields.

Это поле аналогично ChronoField.DAY_OF_WEEK, но использует значения дня недели, определяемые этим WeekFields. Дни нумеруются от 1 до 7, причем значению 1 соответствует first day-of-week.

Например, если первым днем недели является воскресенье, ему будет присвоено значение 1, а остальные дни будут иметь значения от 2 для понедельника до 7 для субботы.

На этапе разрешения при разборе локализованный день недели преобразуется в стандартный день недели ChronoField. День недели должен находиться в допустимом диапазоне от 1 до 7. Другие поля этого класса создают даты, используя стандартный день недели.

Возвращает:
поле, обеспечивающее доступ к дню недели с локализованной нумерацией, не null

weekOfMonth

public TemporalField weekOfMonth()
Возвращает поле для доступа к неделе месяца на основе этого WeekFields.

Это понятие количества недель в месяце, где недели начинаются в фиксированный день, например в понедельник. Обычно это поле используется вместе с dayOfWeek().

Неделя 1 — это неделя, начинающаяся в getFirstDayOfWeek(), в которой на этот месяц приходится не менее getMinimalDaysInFirstWeek() дней. Таким образом, неделя 1 может начинаться не более чем за minDays дней до начала месяца. Если первая неделя начинается после начала месяца, предшествующий период относится к неделе 0.

Например:
- если 1-е число месяца приходится на понедельник, неделя 1 начинается 1-го числа, и недели 0 нет
- если 2-е число месяца приходится на понедельник, неделя 1 начинается 2-го числа, а 1-е относится к неделе 0
- если 4-е число месяца приходится на понедельник, неделя 1 начинается 4-го числа, а даты с 1-го по 3-е относятся к неделе 0
- если 5-е число месяца приходится на понедельник, неделя 2 начинается 5-го числа, а даты с 1-го по 4-е относятся к неделе 1

Это поле можно использовать с любой календарной системой.

На этапе разрешения при разборе дату можно создать на основе года, недели месяца, месяца года и дня недели.

В строгом режиме все четыре поля проверяются на соответствие диапазонам допустимых значений. Поле недели месяца проверяется, чтобы убедиться, что полученный месяц совпадает с заданным.

В интеллектуальном режиме все четыре поля проверяются на соответствие диапазонам допустимых значений. Для поля недели месяца проверяется диапазон от 0 до 6, поэтому полученная дата может относиться к месяцу, отличному от указанного.

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

Возвращает:
поле, обеспечивающее доступ к неделе месяца, не null

weekOfYear

public TemporalField weekOfYear()
Возвращает поле для доступа к неделе года на основе этого WeekFields.

Это понятие количества недель в году, где недели начинаются в фиксированный день, например в понедельник. Обычно это поле используется вместе с dayOfWeek().

Неделя 1 — это неделя, начинающаяся в getFirstDayOfWeek(), в которой на этот год приходится не менее getMinimalDaysInFirstWeek() дней. Таким образом, неделя 1 может начинаться не более чем за minDays дней до начала года. Если первая неделя начинается после начала года, предшествующий период относится к неделе 0.

Например:
- если 1-й день года приходится на понедельник, неделя 1 начинается 1-го числа, и недели 0 нет
- если 2-й день года приходится на понедельник, неделя 1 начинается 2-го числа, а 1-е относится к неделе 0
- если 4-й день года приходится на понедельник, неделя 1 начинается 4-го числа, а дни с 1-го по 3-й относятся к неделе 0
- если 5-й день года приходится на понедельник, неделя 2 начинается 5-го числа, а дни с 1-го по 4-й относятся к неделе 1

Это поле можно использовать с любой календарной системой.

На этапе разрешения при разборе дату можно создать на основе года, недели года и дня недели.

В строгом режиме все три поля проверяются на соответствие диапазонам допустимых значений. Поле недели года проверяется, чтобы убедиться, что полученный год совпадает с заданным.

В интеллектуальном режиме все три поля проверяются на соответствие диапазонам допустимых значений. Для поля недели года проверяется диапазон от 0 до 54, поэтому полученная дата может относиться к году, отличному от указанного.

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

Возвращает:
поле, обеспечивающее доступ к неделе года, не null

weekOfWeekBasedYear

public TemporalField weekOfWeekBasedYear()
Возвращает поле для доступа к неделе года на основе недель, определяемой этим WeekFields.

Это понятие количества недель в году, где недели начинаются в фиксированный день, например в понедельник, и каждая неделя принадлежит ровно одному году. Обычно это поле используется вместе с dayOfWeek() и weekBasedYear().

Неделя 1 — это неделя, начинающаяся в getFirstDayOfWeek(), в которой на этот год приходится не менее getMinimalDaysInFirstWeek() дней. Если первая неделя начинается после начала года, предшествующий период относится к последней неделе предыдущего года.

Например:
- если 1-й день года приходится на понедельник, неделя 1 начинается 1-го числа
- если 2-й день года приходится на понедельник, неделя 1 начинается 2-го числа, а 1-е относится к последней неделе предыдущего года
- если 4-й день года приходится на понедельник, неделя 1 начинается 4-го числа, а дни с 1-го по 3-й относятся к последней неделе предыдущего года
- если 5-й день года приходится на понедельник, неделя 2 начинается 5-го числа, а дни с 1-го по 4-й относятся к неделе 1

Это поле можно использовать с любой календарной системой.

На этапе разрешения при разборе дату можно создать на основе года на основе недель, недели года и дня недели.

В строгом режиме все три поля проверяются на соответствие диапазонам допустимых значений. Поле недели года проверяется, чтобы убедиться, что полученный год на основе недель совпадает с заданным.

В интеллектуальном режиме все три поля проверяются на соответствие диапазонам допустимых значений. Для поля недели года на основе недель проверяется диапазон от 1 до 53, поэтому полученная дата может относиться к следующему году на основе недель, а не к указанному.

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

Возвращает:
поле, обеспечивающее доступ к неделе года на основе недель, не null

weekBasedYear

public TemporalField weekBasedYear()
Возвращает поле для доступа к году года на основе недель, определяемого этим WeekFields.

Это понятие года, в котором недели начинаются в фиксированный день, например в понедельник, и каждая неделя принадлежит ровно одному году. Обычно это поле используется вместе с dayOfWeek() и weekOfWeekBasedYear().

Неделя 1 — это неделя, начинающаяся в getFirstDayOfWeek(), в которой на этот год приходится не менее getMinimalDaysInFirstWeek() дней. Таким образом, неделя 1 может начинаться до начала года. Если первая неделя начинается после начала года, предшествующий период относится к последней неделе предыдущего года.

Это поле можно использовать с любой календарной системой.

На этапе разрешения при разборе дату можно создать на основе года на основе недель, недели года и дня недели.

В строгом режиме все три поля проверяются на соответствие диапазонам допустимых значений. Поле недели года проверяется, чтобы убедиться, что полученный год на основе недель совпадает с заданным.

В интеллектуальном режиме все три поля проверяются на соответствие диапазонам допустимых значений. Для поля недели года на основе недель проверяется диапазон от 1 до 53, поэтому полученная дата может относиться к следующему году на основе недель, а не к указанному.

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

Возвращает:
поле, обеспечивающее доступ к году на основе недель, не null

equals

public boolean equals(Object object)
Проверяет, равен ли этот WeekFields указанному объекту.

Сравнение выполняется по полному состоянию правил, то есть по первому дню недели и минимальному количеству дней.

Переопределяет:
equals в классе Object
Параметры:
object — другие правила для сравнения; null возвращает false
Возвращает:
true, если этот объект равен указанным правилам
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Хеш-код этого WeekFields.
Переопределяет:
hashCode в классе Object
Возвращает:
подходящий хеш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Строковое представление этого экземпляра WeekFields.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление, не null

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, где содержатся более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода проблем и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/time/temporal/WeekFields.html

Spec-Zone.ru

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