Класс Calendar.Builder
- java.lang.Object
-
- java.util.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
- См. также:
-
Calendar.getInstance(TimeZone, Locale),Calendar.fields
Конструкторы
| Конструктор | Описание |
|---|---|
Builder() |
Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Calendar |
build() |
Возвращает |
Calendar.Builder |
set(int field,
int value) |
Устанавливает параметр |
Calendar.Builder |
setCalendarType(String type) |
Устанавливает параметр типа календаря заданному |
Calendar.Builder |
setDate(int year,
int month,
int dayOfMonth) |
Устанавливает параметры поля даты в значения, заданные |
Calendar.Builder |
setFields(int... fieldValuePairs) |
Устанавливает параметры полей в значения, заданные |
Calendar.Builder |
setInstant(long instant) |
Устанавливает параметр момента в заданное |
Calendar.Builder |
setInstant(Date instant) |
Устанавливает параметр момента в значение |
Calendar.Builder |
setLenient(boolean lenient) |
Устанавливает параметр режима допуска нестрогого соответствия в значение, заданное |
Calendar.Builder |
setLocale(Locale locale) |
Устанавливает параметр локали в заданную |
Calendar.Builder |
setTimeOfDay(int hourOfDay,
int minute,
int second) |
Устанавливает параметры поля времени суток в значения, заданные |
Calendar.Builder |
setTimeOfDay(int hourOfDay,
int minute,
int second,
int millis) |
Устанавливает параметры поля времени суток в значения, заданные |
Calendar.Builder |
setTimeZone(TimeZone zone) |
Устанавливает параметр часового пояса в заданный |
Calendar.Builder |
setWeekDate(int weekYear,
int weekOfYear,
int dayOfWeek) |
Устанавливает параметры даты, основанные на недели, в значения с указанными спецификаторами даты — год по неделям, неделя года и день недели. |
Calendar.Builder |
setWeekDefinition(int firstDayOfWeek,
int minimalDaysInFirstWeek) |
Устанавливает параметры определения недели в значения, заданные |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Конструкторы
Builder
public Builder()
Создаёт Calendar.Builder.
Методы
setInstant
public Calendar.Builder setInstant(long instant)
Устанавливает параметр instant заданным значением instant — смещением в миллисекундах от эпохи.
- Параметры:
-
instant— смещение в миллисекундах от эпохи - Возвращает:
- this
Calendar.Builder - Исключения:
-
IllegalStateException— если любой из параметров поля уже установлен - См. также:
-
Calendar.setTime(Date),Calendar.setTimeInMillis(long),Calendar.time
setInstant
public Calendar.Builder setInstant(Date instant)
Устанавливает параметр instant в значение, заданное Date. Данный метод эквивалентен вызову setInstant(instant.getTime()).
- Параметры:
-
instant—Date, представляющий смещение в миллисекундах от эпохи - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException— еслиinstantявляетсяnull -
IllegalStateException— если любой из параметров поля уже установлен - См. также:
-
Calendar.setTime(Date),Calendar.setTimeInMillis(long),Calendar.time
set
public Calendar.Builder set(int field,
int value) Устанавливает параметр field в заданное значение value. field — индекс в Calendar.fields, например, DAY_OF_MONTH. В этом методе валидация значения поля не выполняется. Любые значения вне диапазона либо нормализуются в режиме допуска, либо распознаются как недопустимое значение при построении Calendar.
- Параметры:
-
field— индекс поля вCalendar -
value— значение поля - Возвращает:
- this
Calendar.Builder - Исключения:
-
IllegalArgumentException— еслиfieldнедопустимо -
IllegalStateException— если значение instant уже установлено или поля были установлены слишком много раз (приблизительноInteger.MAX_VALUE). - См. также:
Calendar.set(int, int)
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являетсяnull -
IllegalArgumentException— если какое-либо из полей недопустимо илиfieldValuePairs.lengthявляется нечётным числом. -
IllegalStateException— если значение instant уже установлено или поля были установлены слишком много раз (приблизительно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 - См. также:
-
Calendar.setWeekDate(int, int, int),Calendar.isWeekDateSupported()
setTimeZone
public Calendar.Builder setTimeZone(TimeZone zone)
Устанавливает параметр часового пояса в заданный zone. Если для этого Calendar.Builder не задан параметр часового пояса, в методе build будет использован по умолчанию TimeZone.
- Параметры:
-
zone—TimeZone - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException— еслиzoneявляетсяnull - См. также:
Calendar.setTimeZone(TimeZone)
setLenient
public Calendar.Builder setLenient(boolean lenient)
Устанавливает параметр lenient в значение, заданное lenient. Если для этого Calendar.Builder не задан параметр lenient, в методе build будет использован режим допуска.
- Параметры:
-
lenient—trueдля режима допуска;falseдля режима без допуска - Возвращает:
- this
Calendar.Builder - См. также:
Calendar.setLenient(boolean)
setCalendarType
public Calendar.Builder setCalendarType(String type)
Устанавливает параметр типа календаря в заданное значение type. Тип календаря, заданный этим методом, имеет приоритет над любым явным или неявным типом календаря, заданным локалью locale.
Помимо доступных типов календаря, возвращаемых методом Calendar.getAvailableCalendarTypes, "gregorian" и "iso8601" могут использоваться как алиасы для "gregory".
- Параметры:
-
type— тип календаря - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException— еслиtypeявляетсяnull -
IllegalArgumentException— если тип календаря неизвестен -
IllegalStateException— если другой тип календаря уже задан - См. также:
-
Calendar.getCalendarType(),Calendar.getAvailableCalendarTypes()
setLocale
public Calendar.Builder setLocale(Locale locale)
Устанавливает параметр локали в заданное значение locale. Если для этого Calendar.Builder не задана локаль, будет использована локаль по умолчанию для Locale.Category.FORMAT.
Если тип календаря не задан явно вызовом метода setCalendarType, то значение Locale используется для определения типа Calendar.
Если параметры определения недели не заданы явно вызовом метода setWeekDefinition, используются значения по умолчанию для Locale.
- Параметры:
-
locale—Locale - Возвращает:
- this
Calendar.Builder - Исключения:
-
NullPointerException— еслиlocaleявляетсяnull - См. также:
Calendar.getInstance(Locale)
setWeekDefinition
public Calendar.Builder setWeekDefinition(int firstDayOfWeek,
int minimalDaysInFirstWeek) Устанавливает параметры определения недели в значения, заданные firstDayOfWeek и minimalDaysInFirstWeek, которые используются для определения первой недели года. Параметры, заданные этим методом, имеют приоритет над значениями по умолчанию, заданными локалью locale.
- Параметры:
-
firstDayOfWeek- первый день недели; один изCalendar.SUNDAYдоCalendar.SATURDAY -
minimalDaysInFirstWeek- минимальное количество дней в первой неделе (1..7) - Возвращает:
- это
Calendar.Builder - Выбрасывает:
-
IllegalArgumentException- еслиfirstDayOfWeekилиminimalDaysInFirstWeekнекорректны - См. также:
-
Calendar.getFirstDayOfWeek(),Calendar.getMinimalDaysInFirstWeek()
build
public Calendar build()
Возвращает Calendar, созданный на основе параметров, установленных методами-сеттерами. Тип календаря, заданный методом setCalendarType или параметром locale, используется для определения создаваемого Calendar. Если тип календаря не задан явно, используется по умолчанию для данного locale.
Если тип календаря "iso8601", дата перехода к григорианскому календарю Gregorian change date для GregorianCalendar устанавливается на Date(Long.MIN_VALUE) для получения пролептического григорианского календаря. Параметры определения недели также устанавливаются для соответствия стандарту ISO 8601. Обратите внимание, что метод getCalendarType для GregorianCalendar , созданного с использованием "iso8601", возвращает "gregory".
Если параметры locale и часового пояса не заданы явно, используются значения по умолчанию.
Если locale содержит часовой пояс с расширением "tz" Unicode extension, и часовой пояс не задан явно, используется часовой пояс из locale.
Значения полей, выходящие за допустимые пределы, либо нормализуются в режиме lenient, либо распознаются как недопустимые значения в режиме non-lenient.
- Возвращает:
Calendar, созданный с параметрами этогоCalendar.Builder- Выбрасывает:
-
IllegalArgumentException- если тип календаря неизвестен, или если заданы некорректные значения полей в режиме non-lenient, или если для календаря, не поддерживающего даты недели, задана дата недели. - См. также:
-
Calendar.getInstance(TimeZone, Locale),Locale.getDefault(Locale.Category),TimeZone.getDefault()
© 1993, 2020, 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/11/docs/api/java.base/java/util/Calendar.Builder.html