Класс 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 января. Недели между неделей 1 одного года и неделей 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 настройкой), то неделя 1 1998 года начинается 29 декабря 1997 года и заканчивается 4 января 1998 года. Год недели составляет 1998 для последних трех дней календарного года 1997. Однако если getFirstDayOfWeek() равно SUNDAY, то неделя 1 1998 года начинается 4 января 1998 года и заканчивается 10 января 1998 года; первые три дня 1998 года затем являются частью недели 53 1997 года, и их год недели — 1997.

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

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

Поле Значение по умолчанию
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, Сериализованная форма

Вложенные классы

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

Calendar.Builder

Поля

Модификатор и тип Поле Описание
static int AD

Значение поля ERA, указывающее на общую эру (Anno Domini), также известную как CE.

static int BC

Значение поля ERA, указывающее на период до общей эры (до Рождества Христова), также известный как BCE.

Поля, объявленные в классе java.util.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.

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)

Определяет, является ли заданный год високосным.

boolean isWeekDateSupported()

Возвращает true, указывающее, что этот GregorianCalendar поддерживает даты недели.

void roll​(int field, boolean up)

Добавляет или вычитает (вверх/вниз) единицу времени для данного поля времени, не изменяя более крупные поля.

void roll​(int field, int amount)

Добавляет знаковое значение к указанному полю календаря, не изменяя более крупные поля.

void setGregorianChange​(Date date)

Устанавливает дату перехода на григорианский календарь.

void setWeekDate​(int weekYear, int weekOfYear, int dayOfWeek)

Устанавливает этот GregorianCalendar на дату, заданную спецификаторами даты - weekYear, weekOfYear, и dayOfWeek.

ZonedDateTime toZonedDateTime()

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

Методы, объявленные в классе java.util.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

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

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

Поля

BC

public static final int BC

Значение поля ERA, обозначающее период до новой эры (до Рождества Христова), также известный как до нашей эры. Последовательность лет при переходе от BC к AD выглядит так: ..., 2 до н.э., 1 до н.э., 1 н.э., 2 н.э.,...

См. также:
Calendar.ERA, Значения константных полей
public static final int AD

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

См. также:
Calendar.ERA, Значения константных полей

Конструкторы

GregorianCalendar

public GregorianCalendar()

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

GregorianCalendar

public GregorianCalendar(TimeZone zone)

Создаёт GregorianCalendar, основываясь на текущем времени в заданном часовом поясе с локалью по умолчанию для форматирования.

Параметры:
zone - заданный часовой пояс.

GregorianCalendar

public GregorianCalendar(Locale aLocale)

Создаёт GregorianCalendar, основываясь на текущем времени в часовом поясе по умолчанию с заданной локалью.

Параметры:
aLocale - заданная локали.

GregorianCalendar

public GregorianCalendar(TimeZone zone,
                         Locale aLocale)

Создаёт GregorianCalendar, основываясь на текущем времени в заданном часовом поясе с заданной локалью.

Параметры:
zone - заданный часовой пояс.
aLocale - заданная локали.

GregorianCalendar

public GregorianCalendar(int year,
                         int month,
                         int dayOfMonth)

Создаёт GregorianCalendar с заданной датой в часовом поясе по умолчанию с локалью по умолчанию.

Параметры:
year - значение, используемое для установки поля календаря YEAR в календаре.
month - значение, используемое для установки поля календаря MONTH в календаре. Значение месяца имеет нулевую базу. Например, 0 для января.
dayOfMonth - значение, используемое для установки поля календаря DAY_OF_MONTH в календаре.

GregorianCalendar

public GregorianCalendar(int year,
                         int month,
                         int dayOfMonth,
                         int hourOfDay,
                         int minute)

Создаёт GregorianCalendar с заданной датой и временем в часовом поясе по умолчанию с локалью по умолчанию.

Параметры:
year - значение, используемое для установки поля календаря YEAR в календаре.
month - значение, используемое для установки поля календаря MONTH в календаре. Значение месяца имеет нулевую базу. Например, 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 для января.
dayOfMonth - значение, используемое для установки поля календаря DAY_OF_MONTH в календаре.
hourOfDay - значение, используемое для установки поля календаря HOUR_OF_DAY в календаре.
minute - значение, используемое для установки поля календаря MINUTE в календаре.
second - значение, используемое для установки поля календаря SECOND в календаре.

Методы

setGregorianChange

public void setGregorianChange(Date date)

Устанавливает дату перехода на григорианский календарь. Это момент перехода от юлианского к григорианскому календарю. По умолчанию — 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.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(java.lang.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
Параметры:
up - указывает, увеличивать или уменьшать значение указанного поля календаря. Используйте true для увеличения, false в противном случае.
field - поле времени.
Исключения:
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 декабря 1969 года (в юлианском календаре). Следовательно, даты с 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. Даты в неделями с 1 по максимальный номер недели года имеют одинаковое значение года недели, которое может быть на один год раньше или позже значения YEAR (год календаря).

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

Переопределяет:
getWeekYear в классе Calendar
Возвращает:
год недели, представленный этим объектом GregorianCalendar. Если значение ERA равно BC, год представляется 0 или отрицательным числом: до нашей эры 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, которая также будет иметь то же значение для модифицированных юлианских дней.

Возвращает:
объект zoned date-time, представляющий ту же точку на временной шкале, что и этот объект gregorian calendar
С:
1.8

from

public static GregorianCalendar from(ZonedDateTime zdt)

Получает экземпляр GregorianCalendar с локалью по умолчанию из объекта ZonedDateTime.

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

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

Параметры:
zdt - объект zoned date-time для преобразования
Возвращает:
объект gregorian calendar, представляющий ту же точку на временной шкале, что и предоставленный zoned date-time
Выбрасывает:
NullPointerException - если zdt имеет значение null
IllegalArgumentException - если zoned date-time слишком велик для представления как GregorianCalendar
С:
1.8

© 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/GregorianCalendar.html

Spec-Zone .ru
спецификации, руководства, описания, API