Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
protected void finalize()
Устарело, планируется удаление: этот элемент API планируется удалить в будущей версии.
Финализация объявлена устаревшей и планируется к удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.

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

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 — если минимальное количество дней меньше 1 или больше 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, при этом значению first day-of-week соответствует 1.

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

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

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

weekOfMonth

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

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

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

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

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

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

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

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

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

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

weekOfYear

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

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

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

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

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

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

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

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

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

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

weekOfWeekBasedYear

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

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

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

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

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

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

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

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

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

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

weekBasedYear

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

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

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

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

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

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

В разумном режиме все три поля проверяются на соответствие допустимым диапазонам значений. Поле недели года в системе нумерации лет по неделям проверяется в диапазоне от 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, 2026, 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.

Spec-Zone.ru

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