Spec-Zone.ru › OpenJDK 24

Класс 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.

Методы, объявленные в классе java.lang.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, подходящий для определенного языка.

Это позволит получить соответствующие значения от поставщика данных локализации. Если в языке есть "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 - если значение минимальных дней меньше одного или больше семи

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-го и нет недели ноль
- если 2-й день месяца - понедельник, неделя один начинается со 2-го, а 1-й - в неделе ноль
- если 4-й день месяца - понедельник, неделя один начинается с 4-го, а с 1-го по 3-й - в неделе ноль
- если 5-й день месяца - понедельник, неделя два начинается с 5-го, а с 1-го по 4-й - в неделе один

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

В фазе разрешения анализа дата может быть создана из года, недели месяца, месяца года и дня недели.

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

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

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

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

weekOfYear

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

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

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

Например:
- если 1-й день года - понедельник, неделя один начинается с 1-го и нет недели ноль
- если 2-й день года - понедельник, неделя один начинается со 2-го, а 1-й - в неделе ноль
- если 4-й день года - понедельник, неделя один начинается с 4-го, а с 1-го по 3-й - в неделе ноль
- если 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-й, 2-й и 3-й дни входят в последнюю неделю предыдущего года
- если 5-й день года — понедельник, вторая неделя начинается с 5-го, а 1-й, 2-й, 3-й и 4-й дни входят в первую неделю

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

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

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

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

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

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

weekBasedYear

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

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

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

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

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

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

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

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

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

equals

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

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

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

hashCode

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

toString

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/temporal/WeekFields.html

Spec-Zone.ru

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