Класс 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 с датой 31.12.2012 (григорианский), поскольку понедельник является первым днем недели с параметрами недели, совместимыми с ISO 8601.
Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
.setWeekDate(2013, 1, MONDAY).build(); Следующий код создаёт японский Calendar с датой 08.01.1989 (григорианский), предполагая, что значение по умолчанию для ERA — Хэйсэй, которое началось в этот день.
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(Date instant) Устанавливает параметр момента времени в значение |
Calendar.Builder |
setInstant(long 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- миллисекундное смещение от эпохи - Возвращает:
- этот
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, представляющий миллисекундное смещение от эпохи - Возвращает:
- этот
Calendar.Builder - Исключения:
-
NullPointerException- еслиinstantnull -
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- значение поля - Возвращает:
- этот
Calendar.Builder - Исключения:
-
IllegalArgumentException- еслиfieldнекорректно -
IllegalStateException- если значение момента времени уже установлено, или если поля были установлены слишком много раз (приблизительноInteger.MAX_VALUE). - См. также:
Calendar.set(int, int)
setFields
public Calendar.Builder setFields(int... fieldValuePairs)
Устанавливает параметры поля на их значения, заданные fieldValuePairs - парами поля и его значения. Например,
setFeilds(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- пары поле-значение - Возвращает:
- этот
Calendar.Builder - Исключения:
-
NullPointerException- еслиfieldValuePairsnull -
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(номерация месяцев нулевая). -
dayOfMonth- значениеDAY_OF_MONTH - Возвращает:
- этот
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 - Возвращает:
- этот
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 - Возвращает:
- этот
Calendar.Builder
setWeekDate
public Calendar.Builder setWeekDate(int weekYear,
int weekOfYear,
int dayOfWeek) Устанавливает параметры даты, основанной на неделе, на значения с заданными спецификаторами даты - год недели, номер недели и день недели.
Если указанный календарь не поддерживает даты, основанные на неделе, метод build выбросит исключение IllegalArgumentException.
- Параметры:
-
weekYear- год недели -
weekOfYear- номер недели, основанный наweekYear -
dayOfWeek- значение дня недели: одно из констант для поляDAY_OF_WEEK:SUNDAY, ...,SATURDAY. - Возвращает:
- этот
Calendar.Builder - См. также:
-
Calendar.setWeekDate(int, int, int),Calendar.isWeekDateSupported()
setTimeZone
public Calendar.Builder setTimeZone(TimeZone zone)
Устанавливает параметр часового пояса на заданный zone. Если параметр часового пояса не задан для этого Caledar.Builder, в методе build будет использован по умолчанию TimeZone.
- Параметры:
-
zone-TimeZone - Возвращает:
- этот
Calendar.Builder - Исключения:
-
NullPointerException- еслиzonenull - См. также:
Calendar.setTimeZone(TimeZone)
setLenient
public Calendar.Builder setLenient(boolean lenient)
Устанавливает параметр «поблажки» на заданное значение lenient. Если параметр «поблажки» не задан для этого Calendar.Builder, в методе build будет использован режим «поблажки».
- Параметры:
-
lenient-trueдля режима «поблажки»;falseдля режима «без поблажек» - Возвращает:
- этот
Calendar.Builder - См. также:
Calendar.setLenient(boolean)
setCalendarType
public Calendar.Builder setCalendarType(String type)
Устанавливает параметр типа календаря на заданный type. Тип календаря, заданный этим методом, имеет приоритет над любым явным или неявным типом календаря, заданным языком.
Помимо доступных типов календарей, возвращаемых методом Calendar.getAvailableCalendarTypes, "gregorian" и "iso8601" в качестве псевдонимов "gregory" могут быть использованы с этим методом.
- Параметры:
-
type- тип календаря - Возвращает:
- этот
Calendar.Builder - Исключения:
-
NullPointerException- еслиtypenull -
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 - Возвращает:
- этот
Calendar.Builder - Исключения:
-
NullPointerException- еслиlocalenull - См. также:
Calendar.getInstance(Locale)
setWeekDefinition
public Calendar.Builder setWeekDefinition(int firstDayOfWeek,
int minimalDaysInFirstWeek) Устанавливает параметры определения недели на значения, заданные firstDayOfWeek и minimalDaysInFirstWeek, которые используются для определения первой недели года. Указанные в этом методе параметры имеют приоритет над значениями по умолчанию, заданными локалью.
- Параметры:
-
firstDayOfWeek- первый день недели; один изCalendar.SUNDAYпоCalendar.SATURDAY -
minimalDaysInFirstWeek- минимальное количество дней в первой неделе (1..7) - Возвращает:
- this
Calendar.Builder - Выбрасывает:
-
IllegalArgumentException- еслиfirstDayOfWeekилиminimalDaysInFirstWeekневерны - См. также:
-
Calendar.getFirstDayOfWeek(),Calendar.getMinimalDaysInFirstWeek()
build
public Calendar build()
Возвращает календарь, построенный по параметрам, установленным методами-сеттерами. Тип календаря, заданный методом setCalendarType или локалью, используется для определения создаваемого календаря. Если тип календаря не указан явно, создается календарь по умолчанию для локали.
Если тип календаря "iso8601", дата изменения григорианского календаря для GregorianCalendar устанавливается на Date(Long.MIN_VALUE) для обеспечения пролептического григорианского календаря. Его параметры определения недели также устанавливаются как совместимые со стандартом ISO 8601. Обратите внимание, что метод getCalendarType для GregorianCalendar созданного с помощью "iso8601" возвращает "gregory".
Если параметры локали и часового пояса не указаны явно, используются значения по умолчанию.
Любые значения полей, выходящие за пределы допустимого диапазона, либо нормализуются в режиме смягчения, либо распознаются как недопустимые в режиме без смягчения.
- Возвращает:
- календарь, построенный с параметрами этого
Calendar.Builder - Выбрасывает:
-
IllegalArgumentException- если тип календаря неизвестен, или если в режиме без смягчения заданы какие-либо недопустимые значения полей, или если для типа календаря, не поддерживающего даты недели, задана дата недели. - См. также:
-
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.