Класс 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. |
Методы, объявленные в классе 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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени. |
Подробное описание полей
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, соответствующий локали. Метод ищет подходящие значения у поставщика данных локализации. Если локаль содержит расширения 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 указанному объекту. Сравнение основано на полном состоянии правил: первом дне недели и минимальном количестве дней.
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.