Класс Calendar.Builder
- Вложенный класс:
Calendar
public static class Calendar.Builder extends Object
Calendar.Builder используется для создания объекта Calendar на основе различных параметров даты и времени. Существует два способа задания значения даты и времени объекту Calendar. Один способ — задать параметр момента времени в виде миллисекундного смещения от эпохи. Другой способ — задать отдельные параметры полей, такие как YEAR, своим желаемым значениям. Эти два способа нельзя смешивать. Попытка установить и параметр момента времени, и отдельные поля приведет к тому, что будет брошено исключение IllegalStateException. Однако разрешается перезаписывать предыдущие значения параметров момента времени или полей.
Если для определения даты и/или времени недостаточно параметров полей, при создании 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 — Heisei, которое началось в этот день.
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 — миллисекундное смещение от эпохи. |
Calendar.Builder |
setInstant |
Устанавливает параметр момента времени в значение instant, заданное объектом Date. |
Calendar.Builder |
setLenient |
Устанавливает параметр режима сжатия в значение, заданное lenient. |
Calendar.Builder |
setLocale |
Устанавливает параметр локализации в указанную locale. |
Calendar.Builder |
setTimeOfDay |
Устанавливает параметры поля времени суток в значения, заданные hourOfDay, minute, и second. |
Calendar.Builder |
setTimeOfDay |
Устанавливает параметры поля времени суток в значения, заданные hourOfDay, minute, second, и millis. |
Calendar.Builder |
setTimeZone |
Устанавливает параметр временной зоны в указанную 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- еслиinstantnull -
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- если значение поля недопустимо -
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- еслиfieldValuePairsnull -
IllegalArgumentException- если какое-либо из полей является недопустимым или количество полей нечётное. -
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- номер недели в году, основанный наweekYear -
dayOfWeek- значение дня недели: одно из константных значений для поляDAY_OF_WEEK:SUNDAY, ...,SATURDAY. - Возвращает:
- this
Calendar.Builder - См. также:
setTimeZone
public Calendar.Builder setTimeZone(TimeZone zone)
zone. Если параметр часового пояса не задан для этого Calendar.Builder, в методе build будет использован стандартный часовой пояс.- Параметры:
-
zone- объектTimeZone - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException- еслиzonenull - См. также:
setLenient
public Calendar.Builder setLenient(boolean lenient)
lenient. Если параметр lenient не задан для данного Calendar.Builder, в методе build будет использован режим lenient.- Параметры:
-
lenient- значениеtrueдля lenient,falseдля non-lenient - Возвращает:
- this
Calendar.Builder - См. также:
setCalendarType
public Calendar.Builder setCalendarType(String type)
type. Тип календаря, заданный данным методом, имеет приоритет над явным или неявным типом календаря, заданным языком. В дополнение к доступным типам календарей, возвращаемым методом Calendar.getAvailableCalendarTypes, "gregorian" и "iso8601" могут использоваться в качестве псевдонимов для "gregory".
- Параметры:
-
type- тип календаря - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException- еслиtypenull -
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- еслиlocalenull - 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".
Значения по умолчанию используются для локали и часового пояса, если эти параметры не заданы явно.
Если в локали есть часовой пояс с расширением "tz" Unicode, и часовой пояс не задан явно, используется часовой пояс из локали.
Любые значения полей, выходящие за пределы допустимого диапазона, либо нормализуются в режиме leniency, либо распознаются как недопустимые значения в режиме non-lenient.
- Returns:
Calendar, созданный с параметрами этогоCalendar.Builder- Throws:
-
IllegalArgumentException- если тип календаря неизвестен или заданы недопустимые значения полей в режиме non-lenient, или если для типа календаря, который не поддерживает даты недели, задана дата недели. - See Also:
© 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/util/Calendar.Builder.html