Класс Calendar.Builder
- Вложенный класс:
Calendar
public static class Calendar.Builder extends Object
Calendar.Builder используется для создания экземпляра Calendar на основе различных параметров даты и времени. Существует два способа установки значения даты и времени для Calendar. Первый — установить параметр instant со значением миллисекундного смещения от эпохи. Второй — установить отдельные параметры полей, такие как YEAR, до желаемых значений. Эти два способа несовместимы. Попытка установить и параметр instant, и отдельные поля, приведёт к исключению IllegalStateException. Однако разрешается перезаписывать предыдущие значения параметров instant или полей.
Если для определения даты и/или времени предоставлено недостаточно параметров полей, при построении экземпляра Calendar используются значения по умолчанию, специфичные для календаря. Например, если для григорианского календаря не указано значение поля YEAR, будет использовано значение 1970. При наличии конфликтов между параметрами полей применяются правила разрешения. Следовательно, порядок установки полей имеет значение.
Помимо параметров даты и времени, можно установить параметры локализацию, временную зону, определение недели и режим снисхождения.
Примеры
Ниже приведены примеры использования. Примеры кода предполагают статическое импортирование Calendar констант.
Следующий код генерирует экземпляр Calendar с датой 2012-12-31 (григорианский), так как понедельник — первый день недели с параметрами недели, совместимыми с ISO 8601.
Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
.setWeekDate(2013, 1, MONDAY).build(); Следующий код генерирует японский экземпляр Calendar с датой 1989-01-08 (григорианский), предполагая, что по умолчанию ERA — Хэйсэй, который начался в этот день.
Calendar cal = new Calendar.Builder().setCalendarType("japanese")
.setFields(YEAR, 1, DAY_OF_YEAR, 1).build();
- Дата добавления:
- 1.8
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Builder() |
Создаёт Calendar.Builder. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Calendar |
build() |
Возвращает экземпляр Calendar, построенный на основе параметров, установленных методами-сеттерами. |
Calendar.Builder |
set |
Устанавливает параметр field заданному значению value. |
Calendar.Builder |
setCalendarType |
Устанавливает параметр типа календаря заданному значению type. |
Calendar.Builder |
setDate |
Устанавливает параметры полей даты значениям, заданным year, month и dayOfMonth. |
Calendar.Builder |
setFields |
Устанавливает параметры полей значениям, заданным fieldValuePairs, которые являются парами поля и его значения. |
Calendar.Builder |
setInstant |
Устанавливает параметр instant заданному значению instant, которое представляет собой миллисекундное смещение от эпохи. |
Calendar.Builder |
setInstant |
Устанавливает параметр instant значению instant, заданному объектом Date. |
Calendar.Builder |
setLenient |
Устанавливает параметр lenient заданному значению lenient. |
Calendar.Builder |
setLocale |
Устанавливает параметр locale заданному значению locale. |
Calendar.Builder |
setTimeOfDay |
Устанавливает параметры полей времени значениям, заданным hourOfDay, minute и second. |
Calendar.Builder |
setTimeOfDay |
Устанавливает параметры полей времени значениям, заданным hourOfDay, minute, second и millis. |
Calendar.Builder |
setTimeZone |
Устанавливает параметр time zone заданному значению zone. |
Calendar.Builder |
setWeekDate |
Устанавливает параметры даты, основанной на неделе, значениям с заданными спецификаторами даты — номер года, номер недели и день недели. |
Calendar.Builder |
setWeekDefinition |
Устанавливает параметры определения недели значениям, заданным firstDayOfWeek и minimalDaysInFirstWeek, которые используются для определения первой недели года. |
Подробное описание конструкторов
Конструктор
public Builder()
Calendar.Builder.Подробное описание методов
setInstant
public Calendar.Builder setInstant(long instant)
instant значение, являющееся миллисекундным смещением от эпохи.- Параметры:
-
instant- миллисекундное смещение от эпохи - Возвращает:
- this
Calendar.Builder - Исключения:
-
IllegalStateException- если любой из параметров поля уже установлен - См. также:
setInstant
public Calendar.Builder setInstant(Date instant)
instant объектом Date. Этот метод эквивалентен вызову setInstant(instant.getTime()).- Параметры:
-
instant- объектDate, представляющий миллисекундное смещение от эпохи - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException- еслиinstantявляетсяnull -
IllegalStateException- если любой из параметров поля уже установлен - См. также:
set
public Calendar.Builder set(int field, int value)
field на заданное value значение. field — это индекс к Calendar.fields, например, DAY_OF_MONTH. В этом методе не выполняется валидация значений поля. Любые значения вне диапазона либо нормализуются в режиме lenient, либо распознаются как недопустимые значения в режиме non-lenient при создании Calendar.- Параметры:
-
field- индекс к полямCalendar -
value- значение поля - Возвращает:
- this
Calendar.Builder - Исключения:
-
IllegalArgumentException- еслиfieldнекорректно -
IllegalStateException- если значение момента времени уже установлено или поля были установлены слишком много раз (примерноInteger.MAX_VALUE). - См. также:
setFields
public Calendar.Builder setFields(int... fieldValuePairs)
fieldValuePairs, которые представляют пары поле-значение. Например,
setFields(Calendar.YEAR, 2013,
Calendar.MONTH, Calendar.DECEMBER,
Calendar.DAY_OF_MONTH, 23); эквивалентно последовательности следующих вызовов set: set(Calendar.YEAR, 2013) .set(Calendar.MONTH, Calendar.DECEMBER) .set(Calendar.DAY_OF_MONTH, 23);
- Параметры:
-
fieldValuePairs- пары поле-значение - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException- еслиfieldValuePairsнекорректно -
IllegalArgumentException- если какие-либо поля некорректны, илиfieldValuePairs.lengthимеет нечётное число. -
IllegalStateException- если значение момента времени уже установлено, или поля были установлены слишком много раз (примерноInteger.MAX_VALUE).
setDate
public Calendar.Builder setDate(int year, int month, int dayOfMonth)
year, month и dayOfMonth. Этот метод эквивалентен вызову:
setFields(Calendar.YEAR, year,
Calendar.MONTH, month,
Calendar.DAY_OF_MONTH, dayOfMonth);
- Параметры:
-
year- значениеYEAR -
month- значениеMONTH(нумерация месяцев основана на 0). -
dayOfMonth- значениеDAY_OF_MONTH - Возвращает:
- this
Calendar.Builder
setTimeOfDay
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second)
hourOfDay, minute и second. Этот метод эквивалентен вызову: setTimeOfDay(hourOfDay, minute, second, 0);
- Параметры:
-
hourOfDay- значениеHOUR_OF_DAY(24-часовой формат) -
minute- значениеMINUTE -
second- значениеSECOND - Возвращает:
- this
Calendar.Builder
setTimeOfDay
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second, int millis)
hourOfDay, minute, second и millis. Этот метод эквивалентен вызову:
setFields(Calendar.HOUR_OF_DAY, hourOfDay,
Calendar.MINUTE, minute,
Calendar.SECOND, second,
Calendar.MILLISECOND, millis);
- Параметры:
-
hourOfDay- значениеHOUR_OF_DAY(24-часовой формат) -
minute- значениеMINUTE -
second- значениеSECOND -
millis- значениеMILLISECOND - Возвращает:
- this
Calendar.Builder
setWeekDate
public Calendar.Builder setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
Если указанный календарь не поддерживает даты по неделям, метод build выбросит исключение IllegalArgumentException.
- Параметры:
-
weekYear- год по неделям -
weekOfYear- номер недели по году -
dayOfWeek- значение дня недели: одно из констант для поляDAY_OF_WEEK:SUNDAY, ...,SATURDAY. - Возвращает:
- this
Calendar.Builder - См. также:
setTimeZone
public Calendar.Builder setTimeZone(TimeZone zone)
zone. Если для данного Calendar.Builder не задан параметр часового пояса, в методе build будет использован по умолчанию TimeZone.- Параметры:
-
zone-TimeZone - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException- еслиzoneнекорректно - См. также:
setLenient
public Calendar.Builder setLenient(boolean lenient)
lenient. Если для данного Calendar.Builder не задан параметр lenient mode, в методе build будет использован режим lenient.- Параметры:
-
lenient- значениеtrueдля lenient mode;falseдля non-lenient mode - Возвращает:
- this
Calendar.Builder - См. также:
setCalendarType
public Calendar.Builder setCalendarType(String type)
type. Тип календаря, заданный этим методом, имеет приоритет над любым явным или неявным типом календаря, заданным локалью. Помимо доступных типов календарей, возвращаемых методом Calendar.getAvailableCalendarTypes, "gregorian" и "iso8601" могут быть использованы как псевдонимы для "gregory" с этим методом.
- Параметры:
-
type- тип календаря - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException- еслиtypeнекорректно -
IllegalArgumentException- если тип календаря неизвестен -
IllegalStateException- если другой тип календаря уже установлен - См. также:
setLocale
public Calendar.Builder setLocale(Locale locale)
locale. Если для данной Calendar.Builder не задана локаль, используется по умолчанию Locale для Locale.Category.FORMAT. Если тип календаря не задан явно вызовом метода setCalendarType, значение Locale используется для определения типа Calendar, который будет создан.
Если параметры определения недели не заданы явно вызовом метода setWeekDefinition, используются значения по умолчанию Locale.
- Parameters:
-
locale-Locale - Returns:
- this
Calendar.Builder - Throws:
-
NullPointerException- еслиlocaleявляетсяnull - See Also:
setWeekDefinition
public Calendar.Builder setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)
firstDayOfWeek и minimalDaysInFirstWeek, которые используются для определения первой недели года. Параметры, заданные этим методом, имеют приоритет над значениями по умолчанию, заданными локалью locale.- Parameters:
-
firstDayOfWeek- первый день недели; одно из значений отCalendar.SUNDAYдоCalendar.SATURDAY -
minimalDaysInFirstWeek- минимальное количество дней в первой неделе (1..7) - Returns:
- this
Calendar.Builder - Throws:
-
IllegalArgumentException- еслиfirstDayOfWeekилиminimalDaysInFirstWeekимеют недопустимые значения - See Also:
build
public Calendar build()
Calendar, созданный на основе параметров, установленных методами-сеттерами. Тип календаря, заданный методом setCalendarType или локалью, используется для определения создаваемого Calendar. Если тип календаря не задан явно, создаётся календарь по умолчанию локали. Если тип календаря "iso8601", дата перехода на григорианский календарь Gregorian change date для GregorianCalendar устанавливается в Date(Long.MIN_VALUE), чтобы получить пролептический григорианский календарь. Также устанавливаются параметры определения недели, соответствующие стандарту ISO 8601. Обратите внимание, что метод getCalendarType для GregorianCalendar, созданного с помощью "iso8601", возвращает "gregory".
Если параметры локали и часового пояса не заданы явно, используются значения по умолчанию.
Если локаль содержит часовой пояс с расширением Unicode "tz", и часовой пояс не задан явно, используется часовой пояс из локали.
Любые значения полей, выходящие за пределы допустимого диапазона, либо нормализуются в режиме lenient, либо распознаются как недопустимые значения в режиме non-lenient.
- Returns:
Calendar, созданный с параметрами этогоCalendar.Builder- Throws:
-
IllegalArgumentException- если тип календаря неизвестен, или если заданы недопустимые значения полей в режиме non-lenient, или если для типа календаря задан дата недели, которая не поддерживается. - See Also:
© 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/util/Calendar.Builder.html