Spec-Zone.ru › OpenJDK 25

Класс GregorianCalendar

java.lang.Object
java.util.Calendar
java.util.GregorianCalendar
Все реализованные интерфейсы:
Serializable, Cloneable, Comparable<Calendar>
public class GregorianCalendar extends Calendar
GregorianCalendar — конкретный подкласс Calendar, предоставляющий стандартную календарную систему, используемую в большинстве стран мира.

GregorianCalendar — гибридный календарь, поддерживающий как юлианскую, так и григорианскую календарные системы с единственным переходом, который по умолчанию соответствует дате введения григорианского календаря (15 октября 1582 года в некоторых странах и позднее в других). Вызывающий код может изменить дату перехода, вызвав setGregorianChange().

Исторически в странах, первыми принявших григорианский календарь, за 4 октября 1582 года (по юлианскому календарю) следовало 15 октября 1582 года (по григорианскому календарю). Этот календарь моделирует это соответствующим образом. До перехода на григорианский календарь GregorianCalendar реализует юлианский календарь. Единственное различие между григорианским и юлианским календарями — правило определения високосного года. В юлианском календаре високосным является каждый четвертый год, тогда как в григорианском календаре пропускаются столетние годы, не делящиеся на 400.

GregorianCalendar реализует пролептические григорианский и юлианский календари. То есть даты вычисляются путем бесконечной экстраполяции действующих правил назад и вперед во времени. В результате GregorianCalendar можно использовать для всех лет, получая осмысленные и согласованные результаты. Однако даты, полученные с помощью GregorianCalendar, исторически достоверны только начиная с 1 марта 4 года н. э., когда были приняты современные правила юлианского календаря. До этой даты правила определения високосных лет применялись нерегулярно, а до 45 года до н. э. юлианского календаря вообще не существовало.

До введения григорианского календаря Новым годом считалось 25 марта. Во избежание путаницы в этом календаре всегда используется 1 января. При необходимости можно вручную скорректировать даты до перехода на григорианский календарь, приходящиеся на период с 1 января по 24 марта.

Неделя года и календарный год недели

Значения, вычисленные для поля WEEK_OF_YEAR, находятся в диапазоне от 1 до 53. Первая неделя календарного года — самый ранний семидневный период, начинающийся в getFirstDayOfWeek() и содержащий не менее getMinimalDaysInFirstWeek() дней этого года. Таким образом, она зависит от значений getMinimalDaysInFirstWeek(), getFirstDayOfWeek() и дня недели, на который приходится 1 января. Недели между первой неделей одного года и первой неделей следующего года (не включая последнюю) нумеруются последовательно от 2 до 52 или 53 (за исключением года или лет, на которые приходится переход между юлианским и григорианским календарями).

Значения getFirstDayOfWeek() и getMinimalDaysInFirstWeek() инициализируются с использованием ресурсов, зависящих от локали, при создании GregorianCalendar. Определение недель соответствует стандарту ISO 8601, если getFirstDayOfWeek() равно MONDAY, а getMinimalDaysInFirstWeek() равно 4; эти значения используются в локалях, где предпочтителен этот стандарт. Их можно явно задать, вызвав setFirstDayOfWeek() и setMinimalDaysInFirstWeek().

Календарный год недели соответствует циклу WEEK_OF_YEAR. Все недели от первой до последней включительно имеют одинаковое значение календарного года недели. Поэтому первые и последние дни календарного года недели могут относиться к разным календарным годам.

Например, 1 января 1998 года — четверг. Если getFirstDayOfWeek() равно MONDAY, а getMinimalDaysInFirstWeek() равно 4 (настройка, соответствующая стандарту ISO 8601), то первая неделя 1998 года начинается 29 декабря 1997 года и заканчивается 4 января 1998 года. Для последних трех дней календарного 1997 года календарный год недели — 1998. Однако если getFirstDayOfWeek() равно SUNDAY, то первая неделя 1998 года начинается 4 января 1998 года и заканчивается 10 января 1998 года; тогда первые три дня 1998 года входят в 53-ю неделю 1997 года, и их календарный год недели — 1997.

Неделя месяца

Значения, вычисленные для поля WEEK_OF_MONTH, находятся в диапазоне от 0 до 6. Первая неделя месяца (дни со значением WEEK_OF_MONTH = 1) — самый ранний набор как минимум из getMinimalDaysInFirstWeek() последовательных дней этого месяца, заканчивающийся за день до getFirstDayOfWeek(). В отличие от первой недели года, первая неделя месяца может быть короче 7 дней, не обязана начинаться с getFirstDayOfWeek() и не включает дни предыдущего месяца. Дни месяца до первой недели имеют значение WEEK_OF_MONTH, равное 0.

Например, если getFirstDayOfWeek() равно SUNDAY, а getMinimalDaysInFirstWeek() равно 4, то первая неделя января 1998 года длится с воскресенья, 4 января, по субботу, 10 января. Для этих дней значение WEEK_OF_MONTH равно 1. Для дней с четверга, 1 января, по субботу, 3 января значение WEEK_OF_MONTH равно 0. Если изменить getMinimalDaysInFirstWeek() на 3, то для дней с 1 по 3 января значение WEEK_OF_MONTH будет равно 1.

Значения полей по умолчанию

Метод clear задает для календарных полей неопределенное значение. GregorianCalendar использует для каждого календарного поля со неопределенным значением следующее значение по умолчанию.

Значения полей GregorianCalendar по умолчанию
Поле Значение по умолчанию
ERA AD
YEAR 1970
MONTH JANUARY
DAY_OF_MONTH 1
DAY_OF_WEEK the first day of week
WEEK_OF_MONTH 0
DAY_OF_WEEK_IN_MONTH 1
AM_PM AM
HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND 0

Значения по умолчанию неприменимы к полям, не перечисленным выше.

Пример:

// get the supported ids for GMT-08:00 (Pacific Standard Time)
String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
// if no ids were returned, something is wrong. get out.
if (ids.length == 0)
    System.exit(0);

 // begin output
System.out.println("Current Time");

// create a Pacific Standard Time time zone
SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);

// set up rules for Daylight Saving Time
pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);

// create a GregorianCalendar with the Pacific Daylight time zone
// and the current date and time
Calendar calendar = new GregorianCalendar(pdt);
Date trialTime = new Date();
calendar.setTime(trialTime);

// print out a bunch of interesting things
System.out.println("ERA: " + calendar.get(Calendar.ERA));
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("DAY_OF_WEEK_IN_MONTH: "
                   + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
System.out.println("ZONE_OFFSET: "
                   + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
System.out.println("DST_OFFSET: "
                   + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
System.out.println("Current Time, with hour reset to 3");
calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
calendar.set(Calendar.HOUR, 3);
System.out.println("ERA: " + calendar.get(Calendar.ERA));
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("DAY_OF_WEEK_IN_MONTH: "
                   + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
System.out.println("ZONE_OFFSET: "
       + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
System.out.println("DST_OFFSET: "
       + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
Начиная с:
1.1
См. также:
  • TimeZone
  • Сериализованная форма

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе Calendar

Calendar.Builder

Краткое описание полей

Модификатор и тип Поле Описание
static final int AD
Значение поля ERA, обозначающее нашу эру (Anno Domini), также известную как CE.
static final int BC
Значение поля ERA, обозначающее период до нашей эры (до Рождества Христова), также известный как BCE.

Поля, объявленные в классе Calendar

ALL_STYLES, AM, AM_PM, APRIL, areFieldsSet, AUGUST, DATE, DAY_OF_MONTH, DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, DAY_OF_YEAR, DECEMBER, DST_OFFSET, ERA, FEBRUARY, FIELD_COUNT, fields, FRIDAY, HOUR, HOUR_OF_DAY, isSet, isTimeSet, JANUARY, JULY, JUNE, LONG, LONG_FORMAT, LONG_STANDALONE, MARCH, MAY, MILLISECOND, MINUTE, MONDAY, MONTH, NARROW_FORMAT, NARROW_STANDALONE, NOVEMBER, OCTOBER, PM, SATURDAY, SECOND, SEPTEMBER, SHORT, SHORT_FORMAT, SHORT_STANDALONE, SUNDAY, THURSDAY, time, TUESDAY, UNDECIMBER, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, YEAR, ZONE_OFFSET

Краткое описание конструкторов

Конструктор Описание
GregorianCalendar()
Создает GregorianCalendar по умолчанию, используя текущее время в часовом поясе по умолчанию и локаль FORMAT по умолчанию.
GregorianCalendar(int year, int month, int dayOfMonth)
Создает GregorianCalendar с заданной датой в часовом поясе по умолчанию и локалью по умолчанию.
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
Создает GregorianCalendar с заданными датой и временем в часовом поясе по умолчанию и локалью по умолчанию.
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
Создает GregorianCalendar с заданными датой и временем в часовом поясе по умолчанию и локалью по умолчанию.
GregorianCalendar(Locale aLocale)
Создает GregorianCalendar на основе текущего времени в часовом поясе по умолчанию с заданной локалью.
GregorianCalendar(TimeZone zone)
Создает GregorianCalendar на основе текущего времени в заданном часовом поясе с локалью FORMAT по умолчанию.
GregorianCalendar(TimeZone zone, Locale aLocale)
Создает GregorianCalendar на основе текущего времени в заданном часовом поясе с заданной локалью.

Краткое описание методов

Модификатор и тип Метод Описание
void add(int field, int amount)
Добавляет к заданному полю календаря указанную (со знаком) величину времени в соответствии с правилами календаря.
protected void computeFields()
Преобразует значение времени (смещение в миллисекундах относительно эпохи) в значения полей календаря.
protected void computeTime()
Преобразует значения полей календаря в значение времени (смещение в миллисекундах относительно эпохи).
boolean equals(Object obj)
Сравнивает этот GregorianCalendar с указанным Object.
static GregorianCalendar from(ZonedDateTime zdt)
Получает экземпляр GregorianCalendar с локалью по умолчанию из объекта ZonedDateTime.
int getActualMaximum(int field)
Возвращает максимальное значение, которое может иметь это поле календаря, с учетом заданного значения времени и текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.
int getActualMinimum(int field)
Возвращает минимальное значение, которое может иметь это поле календаря, с учетом заданного значения времени и текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.
String getCalendarType()
Возвращает "gregory" в качестве типа календаря.
int getGreatestMinimum(int field)
Возвращает наибольшее минимальное значение для заданного поля календаря этого экземпляра GregorianCalendar.
final Date getGregorianChange()
Возвращает дату перехода на григорианский календарь.
int getLeastMaximum(int field)
Возвращает наименьшее максимальное значение для заданного поля календаря этого экземпляра GregorianCalendar.
int getMaximum(int field)
Возвращает максимальное значение для заданного поля календаря этого экземпляра GregorianCalendar.
int getMinimum(int field)
Возвращает минимальное значение для заданного поля календаря этого экземпляра GregorianCalendar.
int getWeeksInWeekYear()
Возвращает количество недель в календарном году недели, представленном этим GregorianCalendar.
int getWeekYear()
Возвращает календарный год недели, представленный этим GregorianCalendar.
int hashCode()
Генерирует хеш-код этого объекта GregorianCalendar.
boolean isLeapYear(int year)
Определяет, является ли заданный год високосным.
final boolean isWeekDateSupported()
Возвращает true, указывающее, поддерживает ли этот GregorianCalendar даты недель.
void roll(int field, boolean up)
Прибавляет или вычитает (увеличивает или уменьшает) одну единицу времени в заданном поле времени, не изменяя поля большего порядка.
void roll(int field, int amount)
Прибавляет значение со знаком к заданному полю календаря, не изменяя поля большего порядка.
void setGregorianChange(Date date)
Задает дату перехода на календарь GregorianCalendar.
void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
Задает для этого GregorianCalendar дату, указанную параметрами даты: weekYear, weekOfYear и dayOfWeek.
ZonedDateTime toZonedDateTime()
Преобразует этот объект в ZonedDateTime, представляющий ту же точку на временной шкале, что и этот GregorianCalendar.

Методы, объявленные в классе Calendar

after, before, clear, clear, clone, compareTo, complete, get, getAvailableCalendarTypes, getAvailableLocales, getDisplayName, getDisplayNames, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, getTimeZone, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, setTimeZone, toInstant, toString

Методы, объявленные в классе Object

finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание полей

BC

public static final int BC
Значение поля ERA, указывающее на период до нашей эры (до Рождества Христова), также известный как BCE. Последовательность лет при переходе от BC к AD выглядит так: ..., 2 BC, 1 BC, 1 AD, 2 AD,...
См. также:
  • Calendar.ERA
  • Значения константных полей

AD

public static final int AD
Значение поля ERA, указывающее на нашу эру (Anno Domini), также известную как CE. Последовательность лет при переходе от BC к AD выглядит так: ..., 2 BC, 1 BC, 1 AD, 2 AD,...
См. также:
  • Calendar.ERA
  • Значения константных полей

Подробное описание конструкторов

GregorianCalendar

public GregorianCalendar()
Создает календарь GregorianCalendar по умолчанию, используя текущее время в часовом поясе по умолчанию и локаль FORMAT по умолчанию.

GregorianCalendar

public GregorianCalendar(TimeZone zone)
Создает календарь GregorianCalendar на основе текущего времени в указанном часовом поясе и локали FORMAT по умолчанию.
Параметры:
zone — указанный часовой пояс.
Исключения:
NullPointerException — если zone равен null

GregorianCalendar

public GregorianCalendar(Locale aLocale)
Создает календарь GregorianCalendar на основе текущего времени в часовом поясе по умолчанию и указанной локали.
Параметры:
aLocale — указанная локаль.
Исключения:
NullPointerException — если aLocale равен null

GregorianCalendar

public GregorianCalendar(TimeZone zone, Locale aLocale)
Создает календарь GregorianCalendar на основе текущего времени в указанном часовом поясе и указанной локали.
Параметры:
zone — указанный часовой пояс.
aLocale — указанная локаль.
Исключения:
NullPointerException — если zone или aLocale равен null

GregorianCalendar

public GregorianCalendar(int year, int month, int dayOfMonth)
Создает календарь GregorianCalendar с указанной датой в часовом поясе и с локалью по умолчанию.
Параметры:
year — значение, используемое для установки поля календаря YEAR в календаре.
month — значение, используемое для установки поля календаря MONTH в календаре. Значение месяца начинается с 0, например 0 соответствует январю.
dayOfMonth — значение, используемое для установки поля календаря DAY_OF_MONTH в календаре.

GregorianCalendar

public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
Создает календарь GregorianCalendar с указанными датой и временем в часовом поясе и с локалью по умолчанию.
Параметры:
year — значение, используемое для установки поля календаря YEAR в календаре.
month — значение, используемое для установки поля календаря MONTH в календаре. Значение месяца начинается с 0, например 0 соответствует январю.
dayOfMonth — значение, используемое для установки поля календаря DAY_OF_MONTH в календаре.
hourOfDay — значение, используемое для установки поля календаря HOUR_OF_DAY в календаре.
minute — значение, используемое для установки поля календаря MINUTE в календаре.

GregorianCalendar

public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
Создает GregorianCalendar с указанными датой и временем в часовом поясе и с локалью по умолчанию.
Параметры:
year — значение, используемое для установки поля календаря YEAR в календаре.
month — значение, используемое для установки поля календаря MONTH в календаре. Значение месяца начинается с 0, например 0 соответствует январю.
dayOfMonth — значение, используемое для установки поля календаря DAY_OF_MONTH в календаре.
hourOfDay — значение, используемое для установки поля календаря HOUR_OF_DAY в календаре.
minute — значение, используемое для установки поля календаря MINUTE в календаре.
second — значение, используемое для установки поля календаря SECOND в календаре.

Подробное описание методов

setGregorianChange

public void setGregorianChange(Date date)
Устанавливает дату перехода на GregorianCalendar. Это момент перехода от юлианских дат к григорианским. По умолчанию это 15 октября 1582 года (по григорианскому календарю). До этой даты используется юлианский календарь.

Чтобы получить чисто юлианский календарь, установите дату перехода в Date(Long.MAX_VALUE). Чтобы получить чисто григорианский календарь, установите дату перехода в Date(Long.MIN_VALUE).

Параметры:
date — указанная дата перехода на григорианский календарь.

getGregorianChange

public final Date getGregorianChange()
Возвращает дату перехода на григорианский календарь. Это момент перехода от юлианских дат к григорианским. По умолчанию это 15 октября 1582 года (по григорианскому календарю). До этой даты используется юлианский календарь.
Возвращает:
дату перехода на григорианский календарь для этого объекта GregorianCalendar.

isLeapYear

public boolean isLeapYear(int year)
Определяет, является ли указанный год високосным. Возвращает true, если указанный год является високосным. Для указания номеров лет до нашей эры необходимо передать 1 - year number. Например, год 4 до н. э. указывается как -3.
Параметры:
year — указанный год.
Возвращает:
true, если указанный год является високосным; в противном случае — false.

getCalendarType

public String getCalendarType()
Возвращает "gregory" в качестве типа календаря.
Переопределяет:
getCalendarType в классе Calendar
Возвращает:
"gregory"
Начиная с:
1.8
См. также:
  • Расширения Locale
  • Locale.Builder.setLocale(Locale)
  • Locale.Builder.setUnicodeLocaleKeyword(String, String)

equals

public boolean equals(Object obj)
Сравнивает этот объект GregorianCalendar с указанным объектом Object. Результат равен true тогда и только тогда, когда аргумент является объектом GregorianCalendar, представляющим то же значение времени (смещение в миллисекундах от начала эпохи) при тех же параметрах Calendar и той же дате перехода на григорианский календарь, что и этот объект.
Переопределяет:
equals в классе Calendar
Параметры:
obj — объект для сравнения.
Возвращает:
true, если этот объект равен obj; в противном случае — false.
См. также:
  • Calendar.compareTo(Calendar)

hashCode

public int hashCode()
Вычисляет хеш-код этого объекта GregorianCalendar.
Переопределяет:
hashCode в классе Calendar
Возвращает:
значение хеш-кода этого объекта.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

add

public void add(int field, int amount)
Добавляет указанное (знаковое) количество времени к заданному полю календаря в соответствии с правилами календаря.

Правило сложения 1. Разность между значением field после вызова и значением field до вызова равна amount с учетом возможного переполнения в field. Переполнение возникает, когда значение поля выходит за его диапазон; в результате следующее старшее поле увеличивается или уменьшается, а значение поля возвращается в его диапазон.

Правило сложения 2. Если ожидается, что младшее поле останется неизменным, но из-за изменения его минимального или максимального значения после изменения field оно не может сохранить прежнее значение, то его значение корректируется так, чтобы быть максимально близким к ожидаемому. Младшее поле представляет меньшую единицу времени. HOUR — поле младше, чем DAY_OF_MONTH. Младшие поля, которые не должны оставаться неизменными, не корректируются. Система календаря определяет, какие поля должны оставаться неизменными.

Определено в:
add в классе Calendar
Параметры:
field — поле календаря.
amount — количество даты или времени, добавляемое к полю.
Исключения:
IllegalArgumentException — если field равен ZONE_OFFSET, DST_OFFSET или неизвестен либо если значения каких-либо полей календаря выходят за допустимый диапазон в нестрогом режиме.
См. также:
  • Calendar.roll(int,int)
  • Calendar.set(int,int)

roll

public void roll(int field, boolean up)
Увеличивает или уменьшает на одну единицу указанное поле времени, не изменяя старшие поля.

Пример: Рассмотрим GregorianCalendar, изначально установленный на 31 декабря 1999 года. Вызов roll(Calendar.MONTH, true) устанавливает дату календаря на 31 января 1999 года. Поле YEAR не изменяется, поскольку это поле старше, чем MONTH.

Определено в:
roll в классе Calendar
Параметры:
field — поле времени.
up — указывает, нужно ли увеличивать или уменьшать значение указанного поля календаря. Используйте true для увеличения и false для уменьшения.
Исключения:
IllegalArgumentException — если field равен ZONE_OFFSET, DST_OFFSET или неизвестен либо если значения каких-либо полей календаря выходят за допустимый диапазон в нестрогом режиме.
См. также:
  • add(int,int)
  • Calendar.set(int,int)

roll

public void roll(int field, int amount)
Добавляет знаковое значение к указанному полю календаря, не изменяя старшие поля. Отрицательное значение прокрутки означает вычитание из поля без изменения старших полей. Если указанное значение равно 0, этот метод ничего не делает.

Перед добавлением значения этот метод вызывает Calendar.complete(), чтобы нормализовать все поля календаря. Если в нестрогом режиме значение какого-либо поля календаря выходит за допустимый диапазон, возникает исключение IllegalArgumentException.

Пример: Рассмотрим GregorianCalendar, изначально установленный на 31 августа 1999 года. Вызов roll(Calendar.MONTH, 8) устанавливает дату календаря на 30 апреля 1999 года. В GregorianCalendar поле DAY_OF_MONTH не может иметь значение 31 в апреле. DAY_OF_MONTH устанавливается в ближайшее допустимое значение — 30. Поле YEAR сохраняет значение 1999, поскольку это поле старше, чем MONTH.

Пример: Рассмотрим GregorianCalendar, изначально установленный на воскресенье, 6 июня 1999 года. Вызов roll(Calendar.WEEK_OF_MONTH, -1) устанавливает дату календаря на вторник, 1 июня 1999 года, а вызов add(Calendar.WEEK_OF_MONTH, -1) устанавливает дату календаря на воскресенье, 30 мая 1999 года. Это объясняется тем, что правило прокрутки накладывает дополнительное ограничение: MONTH не должно изменяться при прокрутке WEEK_OF_MONTH. В сочетании с правилом сложения 1 результирующая дата должна находиться между вторником, 1 июня, и субботой, 5 июня. Согласно правилу сложения 2, DAY_OF_WEEK, которое не меняется при изменении WEEK_OF_MONTH, устанавливается на вторник — значение, максимально близкое к воскресенью (где воскресенье является первым днем недели).

Переопределяет:
roll в классе Calendar
Параметры:
field — поле календаря.
amount — знаковое значение, добавляемое к field.
Исключения:
IllegalArgumentException — если field равен ZONE_OFFSET, DST_OFFSET или неизвестен либо если значения каких-либо полей календаря выходят за допустимый диапазон в нестрогом режиме.
Начиная с:
1.2
См. также:
  • roll(int,boolean)
  • add(int,int)
  • Calendar.set(int,int)

getMinimum

public int getMinimum(int field)
Возвращает минимальное значение для заданного поля календаря этого экземпляра GregorianCalendar. Минимальное значение определяется как наименьшее значение, возвращаемое методом get для любого возможного значения времени с учетом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.
Определено в:
getMinimum в классе Calendar
Параметры:
field — поле календаря.
Возвращает:
минимальное значение для заданного поля календаря.
См. также:
  • getMaximum(int)
  • getGreatestMinimum(int)
  • getLeastMaximum(int)
  • getActualMinimum(int)
  • getActualMaximum(int)

getMaximum

public int getMaximum(int field)
Возвращает максимальное значение для заданного поля календаря этого экземпляра GregorianCalendar. Максимальное значение определяется как наибольшее значение, возвращаемое методом get для любого возможного значения времени с учетом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.
Определено в:
getMaximum в классе Calendar
Параметры:
field — поле календаря.
Возвращает:
максимальное значение для заданного поля календаря.
См. также:
  • getMinimum(int)
  • getGreatestMinimum(int)
  • getLeastMaximum(int)
  • getActualMinimum(int)
  • getActualMaximum(int)

getGreatestMinimum

public int getGreatestMinimum(int field)
Возвращает наибольшее минимальное значение для заданного поля календаря этого экземпляра GregorianCalendar. Наибольшее минимальное значение определяется как наибольшее значение, возвращаемое методом getActualMinimum(int) для любого возможного значения времени с учетом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.
Определено в:
getGreatestMinimum в классе Calendar
Параметры:
field — поле календаря.
Возвращает:
наибольшее минимальное значение для заданного поля календаря.
См. также:
  • getMinimum(int)
  • getMaximum(int)
  • getLeastMaximum(int)
  • getActualMinimum(int)
  • getActualMaximum(int)

getLeastMaximum

public int getLeastMaximum(int field)
Возвращает наименьшее максимальное значение для заданного поля календаря этого экземпляра GregorianCalendar. Наименьшее максимальное значение определяется как наименьшее значение, возвращаемое методом getActualMaximum(int) для любого возможного значения времени с учетом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.
Определено в:
getLeastMaximum в классе Calendar
Параметры:
field — поле календаря.
Возвращает:
наименьшее максимальное значение для заданного поля календаря.
См. также:
  • getMinimum(int)
  • getMaximum(int)
  • getGreatestMinimum(int)
  • getActualMinimum(int)
  • getActualMaximum(int)

getActualMinimum

public int getActualMinimum(int field)
Возвращает минимальное значение, которое может иметь это поле календаря, с учетом указанного значения времени и текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.

Например, если дата перехода на григорианский календарь — 10 января 1970 года, а дата этого объекта GregorianCalendar — 20 января 1970 года, фактическое минимальное значение поля DAY_OF_MONTH равно 10, поскольку предыдущей датой для 10 января 1970 года является 27 декабря 1996 года (по юлианскому календарю). Поэтому дат с 28 декабря 1969 года по 9 января 1970 года не существует.

Переопределяет:
getActualMinimum в классе Calendar
Параметры:
field — поле календаря.
Возвращает:
минимальное значение заданного поля для значения времени этого объекта GregorianCalendar
Начиная с:
1.2
См. также:
  • getMinimum(int)
  • getMaximum(int)
  • getGreatestMinimum(int)
  • getLeastMaximum(int)
  • getActualMaximum(int)

getActualMaximum

public int getActualMaximum(int field)
Возвращает максимальное значение, которое может иметь это поле календаря, с учетом указанного значения времени и текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone. Например, если дата этого экземпляра — 1 февраля 2004 года, фактическое максимальное значение поля DAY_OF_MONTH равно 29, поскольку 2004 год високосный; если же дата этого экземпляра — 1 февраля 2005 года, оно равно 28.

Этот метод вычисляет максимальное значение WEEK_OF_YEAR на основе значения YEAR (календарного года), а не года недели. Чтобы получить максимальное значение WEEK_OF_YEAR в году недели этого объекта GregorianCalendar, вызовите getWeeksInWeekYear().

Переопределяет:
getActualMaximum в классе Calendar
Параметры:
field — поле календаря.
Возвращает:
максимальное значение заданного поля для значения времени этого объекта GregorianCalendar
Начиная с:
1.2
См. также:
  • getMinimum(int)
  • getMaximum(int)
  • getGreatestMinimum(int)
  • getLeastMaximum(int)
  • getActualMinimum(int)

isWeekDateSupported

public final boolean isWeekDateSupported()
Возвращает true, указывающее, что этот объект GregorianCalendar поддерживает даты, заданные по неделям.
Переопределяет:
isWeekDateSupported в классе Calendar
Возвращает:
true (всегда)
Начиная с:
1.7
См. также:
  • getWeekYear()
  • setWeekDate(int,int,int)
  • getWeeksInWeekYear()

getWeekYear

public int getWeekYear()
Возвращает год недели, представленный этим объектом GregorianCalendar. Даты в неделях от первой до недели с максимальным номером в году недели имеют одно и то же значение года недели, которое может быть на год меньше или больше значения YEAR (календарного года).

Перед вычислением года недели этот метод вызывает Calendar.complete().

Переопределяет:
getWeekYear в классе Calendar
Возвращает:
год недели, представленный этим объектом GregorianCalendar. Если значение ERA равно BC, год представляется нулем или отрицательным числом: 1 год до н. э. — это 0, 2 год до н. э. — это -1, 3 год до н. э. — это -2 и так далее.
Исключения:
IllegalArgumentException — если какое-либо поле календаря недопустимо в нестрогом режиме.
Начиная с:
1.7
См. также:
  • isWeekDateSupported()
  • getWeeksInWeekYear()
  • Calendar.getFirstDayOfWeek()
  • Calendar.getMinimalDaysInFirstWeek()

setWeekDate

public void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
Устанавливает для этого объекта GregorianCalendar дату, заданную параметрами даты: weekYear, weekOfYear и dayOfWeek. weekOfYear следует нумерации WEEK_OF_YEAR. Значение dayOfWeek должно быть одним из значений DAY_OF_WEEK: от SUNDAY до SATURDAY.

Обратите внимание, что числовое представление дня недели отличается от стандарта ISO 8601, а нумерация weekOfYear совместима со стандартом, если getFirstDayOfWeek() равно MONDAY, а getMinimalDaysInFirstWeek() равно 4.

В отличие от метода set, все поля календаря и значение момента времени вычисляются до возврата из метода.

Если weekOfYear выходит за допустимый диапазон номеров недель года в weekYear, значения weekYear и weekOfYear корректируются в строгом режиме либо в нестрогом режиме выбрасывается исключение IllegalArgumentException.

Переопределяет:
setWeekDate в классе Calendar
Параметры:
weekYear — год недели.
weekOfYear — номер недели на основе weekYear
dayOfWeek — значение дня недели: одна из констант поля DAY_OF_WEEK: SUNDAY, ..., SATURDAY.
Исключения:
IllegalArgumentException — если какой-либо из заданных параметров даты недопустим или если в нестрогом режиме какие-либо поля календаря противоречат заданным параметрам даты.
Начиная с:
1.7
См. также:
  • isWeekDateSupported()
  • Calendar.getFirstDayOfWeek()
  • Calendar.getMinimalDaysInFirstWeek()

getWeeksInWeekYear

public int getWeeksInWeekYear()
Возвращает количество недель в году недели, представленном этим GregorianCalendar.

Например, если дата этого GregorianCalendar — 31 декабря 2008 года и используется настройка, совместимая с ISO 8601, этот метод вернёт 53 для периода с 29 декабря 2008 года по 3 января 2010 года, тогда как getActualMaximum(WEEK_OF_YEAR) вернёт 52 для периода с 31 декабря 2007 года по 28 декабря 2008 года.

Переопределяет:
getWeeksInWeekYear в классе Calendar
Возвращает:
количество недель в году недели.
Начиная с версии:
1.7
См. также:
  • Calendar.WEEK_OF_YEAR
  • getWeekYear()
  • getActualMaximum(int)

computeFields

protected void computeFields()
Преобразует значение времени (смещение в миллисекундах относительно эпохи) в значения полей календаря. Время не пересчитывается предварительно; чтобы пересчитать время, а затем поля, вызовите метод complete.
Определён в:
computeFields в классе Calendar
См. также:
  • Calendar.complete()

computeTime

protected void computeTime()
Преобразует значения полей календаря в значение времени (смещение в миллисекундах относительно эпохи).
Определён в:
computeTime в классе Calendar
Выбрасывает:
IllegalArgumentException — если какое-либо поле календаря содержит недопустимое значение.
См. также:
  • Calendar.complete()
  • Calendar.computeFields()

toZonedDateTime

public ZonedDateTime toZonedDateTime()
Преобразует этот объект в ZonedDateTime, представляющий ту же точку на временной шкале, что и этот GregorianCalendar.

Поскольку этот объект поддерживает дату перехода с юлианского календаря на григорианский, а ZonedDateTime — нет, значения года, месяца и дня в результате могут отличаться. Результат будет представлять правильную дату в системе календаря ISO, которая также будет соответствовать тому же значению модифицированного юлианского дня.

Возвращает:
дату и время с часовым поясом, представляющие ту же точку на временной шкале, что и этот григорианский календарь
Начиная с версии:
1.8

from

public static GregorianCalendar from(ZonedDateTime zdt)
Создаёт экземпляр GregorianCalendar с локалью по умолчанию на основе объекта ZonedDateTime.

Поскольку ZonedDateTime не поддерживает дату перехода с юлианского календаря на григорианский и использует систему календаря ISO, возвращаемый GregorianCalendar является чисто григорианским календарём и использует стандарт ISO 8601 для определения недель, в котором MONDAY является значением FirstDayOfWeek, а 4 — значением MinimalDaysInFirstWeek.

ZoneDateTime может хранить точки на временной шкале, расположенные дальше в будущем и прошлом, чем GregorianCalendar. В этом случае данный метод выбросит исключение IllegalArgumentException.

Параметры:
zdt — объект даты и времени с часовым поясом для преобразования
Возвращает:
григорианский календарь, представляющий ту же точку на временной шкале, что и переданная дата и время с часовым поясом
Выбрасывает:
NullPointerException — если zdt равен null
IllegalArgumentException — если дата и время с часовым поясом слишком велики, чтобы быть представленными как GregorianCalendar
Начиная с версии:
1.8

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/GregorianCalendar.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API