Класс 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, если он содержит не менее минимального количества дней.| Дата | День недели | Первый день: понедельник Минимальные дни: 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 года — это первая неделя, которая начинается в первый день недели и содержит не менее минимального количества дней. Первая и последняя недели года могут содержать дни из предыдущего или последующего календарного года соответственно. | Дата | День недели | Первый день: понедельник Минимальные дни: 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 |
Проверяет, равен ли этот WeekFields указанному объекту. |
DayOfWeek |
getFirstDayOfWeek() |
Получает первый день недели. |
int |
getMinimalDaysInFirstWeek() |
Получает минимальное количество дней в первой неделе. |
int |
hashCode() |
Хеш-код для этого WeekFields. |
static WeekFields |
of |
Получает экземпляр WeekFields по первому дню недели и минимальному числу дней. |
static WeekFields |
of |
Получает экземпляр WeekFields, соответствующий локали. |
String |
toString() |
Строковое представление этого WeekFields экземпляра. |
TemporalField |
weekBasedYear() |
Возвращает поле для доступа к году недели, основанного на неделе, на основе этого WeekFields. |
TemporalField |
weekOfMonth() |
Возвращает поле для доступа к неделе месяца на основе этого WeekFields. |
TemporalField |
weekOfWeekBasedYear() |
Возвращает поле для доступа к неделе года, основанного на неделе, на основе этого WeekFields. |
TemporalField |
weekOfYear() |
Возвращает поле для доступа к неделе года на основе этого WeekFields. |
Подробное описание полей
ISO
public static final WeekFields ISO
Стандарт ISO-8601 определяет календарную систему, основанную на неделях. Он использует понятия недели-года и недели-в-неделе-года для разделения дней, вместо стандартного года/месяца/дня.
Обратите внимание, что первая неделя может начинаться в предыдущем календарном году. Также обратите внимание, что первые несколько дней календарного года могут быть в недели-года, соответствующей предыдущему календарному году.
SUNDAY_START
public static final WeekFields SUNDAY_START
Определяется как начинающаяся с воскресенья и с минимумом 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 указанному объекту. Сравнение основано на полном состоянии правил, то есть первом дне недели и минимальном количестве дней.
hashCode
toString
© 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