Класс 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- если значение минимальных дней меньше единицы или больше 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-го и нулевой недели нет
- если 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
неделяНедельноБазируемогоГода
public TemporalField weekOfWeekBasedYear()
WeekFields. Это представляет собой понятие счета недель в году, где недели начинаются в определенный день недели, например, в понедельник, и каждая неделя принадлежит точно одному году. Это поле обычно используется с dayOfWeek() и weekBasedYear().
Первая неделя (1) — это неделя, начинающаяся в getFirstDayOfWeek(), где в году есть как минимум getMinimalDaysInFirstWeek() дней. Если первая неделя начинается после начала года, то период до нее попадает в последнюю неделю предыдущего года.
Например:
- если 1-й день года — понедельник, то первая неделя начинается с 1-го
- если 2-й день года — понедельник, то первая неделя начинается со 2-го, а 1-й день попадает в последнюю неделю предыдущего года
- если 4-й день года — понедельник, то первая неделя начинается с 4-го, а с 1-го по 3-й день попадают в последнюю неделю предыдущего года
- если 5-й день года — понедельник, то вторая неделя начинается с 5-го, а с 1-го по 4-й день попадают в первую неделю
Это поле может использоваться с любой системой календаря.
В фазе разрешения при разборе дата может быть создана из года, недели и дня недели, базирующихся на неделе.
В строгом режиме все три поля проверяются на соответствие допустимому диапазону значений. Поле недели проверяется, чтобы убедиться, что полученный год, базирующийся на неделе, соответствует запрошенному году, базирующемуся на неделе.
В умном режиме все три поля проверяются на соответствие допустимому диапазону значений. Поле недели, базирующееся на году, проверяется от 1 до 53, что означает, что полученная дата может быть в следующем году, базирующемся на неделе, по сравнению со значением, указанным в запросе.
В мягком режиме год и день недели проверяются на соответствие диапазону допустимых значений. Полученная дата вычисляется в соответствии с подходом из трех этапов. Во-первых, создается дата первого дня первой недели в запрошенном году, базирующемся на неделе. Затем берется неделя, базирующаяся на году, вычитается 1 и добавляется полученное значение в неделях к дате. Наконец, корректируется до правильного дня недели в локализованной неделе.
- Возвращает:
- поле, обеспечивающее доступ к неделе года, базирующегося на неделе, не равно null
годНедели
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, если этот объект равен указанным правилам
- См. также:
hashCode
public int hashCode()
WeekFields.- Overrides:
-
hashCodeв классеObject - Возвращает:
- подходящий хеш-код
- См. также:
toString
public String toString()
WeekFields экземпляра.- Overrides:
-
toStringв классеObject - Возвращает:
- строковое представление, не равно null
© 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/WeekFields.html