Класс 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
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе java.util.Calendar
Calendar.Builder
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
AD |
Значение поля ERA, указывающего на общую эру (Anno Domini), также известную как CE. |
static final 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 |
Создаёт GregorianCalendar с заданной датой, установленной в часовом поясе по умолчанию с локалью по умолчанию. |
GregorianCalendar |
Создаёт GregorianCalendar с заданной датой и временем, установленной для часового пояса по умолчанию с локалью по умолчанию. |
GregorianCalendar |
Создаёт GregorianCalendar с заданной датой и временем, установленной для часового пояса по умолчанию с локалью по умолчанию. |
GregorianCalendar |
Создаёт GregorianCalendar на основе текущего времени в часовом поясе по умолчанию с заданной локалью. |
GregorianCalendar |
Создаёт GregorianCalendar на основе текущего времени в заданном часовом поясе с локалью по умолчанию FORMAT. |
GregorianCalendar |
Создаёт GregorianCalendar на основе текущего времени в заданном часовом поясе с заданной локалью. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
add |
Добавляет указанное (со знаком) количество времени к заданному полю календаря, основываясь на правилах календаря. |
protected void |
computeFields() |
Преобразует значение времени (смещение в миллисекундах от эпохи) в значения полей календаря. |
protected void |
computeTime() |
Преобразует значения полей календаря в значение времени (смещение в миллисекундах от эпохи). |
boolean |
equals |
Сравнивает этот GregorianCalendar с указанным Object. |
static GregorianCalendar |
from |
Получает экземпляр GregorianCalendar с локалью по умолчанию из объекта ZonedDateTime. |
int |
getActualMaximum |
Возвращает максимальное значение, которое может иметь это поле календаря, с учетом заданного значения времени и текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone. |
int |
getActualMinimum |
Возвращает минимальное значение, которое может иметь это поле календаря, с учетом заданного значения времени и текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone. |
String |
getCalendarType() |
Возвращает "gregory" в качестве типа календаря. |
int |
getGreatestMinimum |
Возвращает наибольшее минимальное значение для данного поля календаря экземпляра GregorianCalendar. |
final Date |
getGregorianChange() |
Получает дату изменения григорианского календаря. |
int |
getLeastMaximum |
Возвращает наименьшее максимальное значение для данного поля календаря экземпляра GregorianCalendar. |
int |
getMaximum |
Возвращает максимальное значение для данного поля календаря экземпляра GregorianCalendar. |
int |
getMinimum |
Возвращает минимальное значение для данного поля календаря экземпляра GregorianCalendar. |
int |
getWeeksInWeekYear() |
Возвращает количество недель в году недели, представленном этим GregorianCalendar. |
int |
getWeekYear() |
Возвращает год недели, представленный этим GregorianCalendar. |
int |
hashCode() |
Генерирует код хэша для этого объекта GregorianCalendar. |
boolean |
isLeapYear |
Определяет, является ли заданный год високосным. |
final boolean |
isWeekDateSupported() |
Возвращает true, указывающее, что этот GregorianCalendar поддерживает даты недель. |
void |
roll |
Добавляет или вычитает (вверх/вниз) единицу времени к заданному полю времени, не изменяя больших полей. |
void |
roll |
Добавляет/вычитает количество времени к указанному полю календаря без изменения больших полей. |
void |
setGregorianChange |
Устанавливает дату изменения GregorianCalendar. |
void |
setWeekDate |
Устанавливает этот 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
Подробное описание полей
BC
public static final int BC
ERA, указывающее на период до нашей эры (до Рождества Христова), также известный как до н.э. Последовательность лет при переходе от BC к AD: ..., 2 до н.э., 1 до н.э., 1 н.э., 2 н.э.,...- См. также:
AD
public static final int AD
ERA, указывающее на период нашей эры (Anno Domini), также известный как н.э. Последовательность лет при переходе от BC к AD: ..., 2 до н.э., 1 до н.э., 1 н.э., 2 н.э.,...- См. также:
Подробное описание конструкторов
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 (январь). -
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)
- Параметры:
-
year- значение, используемое для установки поляYEARкалендаря. -
month- значение, используемое для установки поляMONTHкалендаря. Значение месяца задаётся от 0 (0 — январь). -
dayOfMonth- значение, используемое для установки поляDAY_OF_MONTHкалендаря. -
hourOfDay- значение, используемое для установки поляHOUR_OF_DAYкалендаря. -
minute- значение, используемое для установки поляMINUTEкалендаря. -
second- значение, используемое для установки поляSECONDкалендаря.
Подробное описание методов
setGregorianChange
public void setGregorianChange(Date date)
Для получения чистого юлианского календаря, установите дату перехода на Date(Long.MAX_VALUE). Для получения чистого григорианского календаря, установите дату перехода на Date(Long.MIN_VALUE).
- Параметры:
-
date- заданная дата перехода на григорианский календарь.
getGregorianChange
public final Date getGregorianChange()
- Возвращает:
- дата перехода на григорианский календарь для этого объекта
GregorianCalendar.
isLeapYear
public boolean isLeapYear(int year)
true, если заданный год является високосным. Для указания годов до нашей эры необходимо использовать отрицательное значение. Например, год до н.э. 4 указывается как -3.- Параметры:
-
year- заданный год. - Возвращает:
-
true, если заданный год является високосным;falseв противном случае.
getCalendarType
public String getCalendarType()
"gregory" в качестве типа календаря.- Переопределяет:
-
getCalendarTypeв классеCalendar - Возвращает:
"gregory"- С:
- 1.8
- См. также:
equals
public boolean equals(Object obj)
GregorianCalendar с указанным Object. Результат равен true тогда и только тогда, когда аргумент является объектом GregorianCalendar, представляющим ту же временную метку (смещение в миллисекундах от эпохи) при тех же параметрах Calendar и дате перехода на григорианский календарь, что и этот объект.hashCode
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или неизвестным, или если какие-либо календарные поля имеют значения, выходящие за пределы диапазона, в режиме без смягчения. - См. также:
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или неизвестным, или если какие-либо календарные поля имеют значения, выходящие за пределы диапазона, в режиме без смягчения. - См. также:
roll
public void roll(int field, int amount)
Этот метод вызывает 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 года. Это происходит потому, что правило roll накладывает дополнительное ограничение: MONTH не должно меняться при изменении WEEK_OF_MONTH. Вместе с правилом добавления 1, результирующая дата должна быть между вторником 1 июня и субботой 5 июня. Согласно правилу добавления 2, DAY_OF_WEEK, инвариант при изменении WEEK_OF_MONTH, устанавливается на вторник, как ближайшее возможное значение к воскресенью (где воскресенье — первый день недели).
- Overrides:
-
rollв классеCalendar - Parameters:
-
field- поле календаря. -
amount- значение для добавления кfield. - Throws:
-
IllegalArgumentException- еслиfieldимеет значениеZONE_OFFSET,DST_OFFSETили неизвестное, или если какие-либо поля календаря имеют значения, выходящие за пределы диапазона в режиме без учета ограничений. - Since:
- 1.2
- See Also:
getMinimum
public int getMinimum(int field)
GregorianCalendar. Минимальное значение определяется как наименьшее значение, возвращаемое методом get для любого возможного значения времени, с учетом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.- Specified by:
-
getMinimumв классеCalendar - Parameters:
-
field- поле календаря. - Returns:
- минимальное значение для данного поля календаря.
- See Also:
getMaximum
public int getMaximum(int field)
GregorianCalendar. Максимальное значение определяется как наибольшее значение, возвращаемое методом get для любого возможного значения времени, с учетом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.- Specified by:
-
getMaximumв классеCalendar - Parameters:
-
field- поле календаря. - Returns:
- максимальное значение для данного поля календаря.
- See Also:
Наибольшее минимальное значение
public int getGreatestMinimum(int field)
getActualMinimum(int) для любого возможного значения времени, принимая во внимание текущие значения методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.- Определено в:
-
getGreatestMinimumв классеCalendar - Параметры:
-
field- поле календаря. - Возвращает:
- наибольшее минимальное значение для данного поля календаря.
- См. также:
Наименьшее максимальное значение
public int getLeastMaximum(int field)
getActualMaximum(int) для любого возможного значения времени, принимая во внимание текущие значения методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.- Определено в:
-
getLeastMaximumв классеCalendar - Параметры:
-
field- поле календаря - Возвращает:
- наименьшее максимальное значение для данного поля календаря.
- См. также:
Фактическое минимальное значение
public int getActualMinimum(int field)
getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone. Например, если дата перехода на григорианский календарь — 10 января 1970 года, а дата этого экземпляра — 20 января 1970 года, фактическое минимальное значение поля DAY_OF_MONTH равно 10, поскольку предыдущая дата 10 января 1970 года — 27 декабря 1969 года (в юлианском календаре). Следовательно, 28 декабря 1969 года по 9 января 1970 года не существуют.
- Переопределяет:
-
getActualMinimumв классеCalendar - Параметры:
-
field- поле календаря - Возвращает:
- минимальное значение данного поля для значения времени этого экземпляра
- С:
- 1.2
- См. также:
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().
- Overrides:
-
getActualMaximumв классеCalendar - Parameters:
-
field- поле календаря - Returns:
- максимальное значение данного поля для временного значения этого
GregorianCalendar - Since:
- 1.2
- See Also:
isWeekDateSupported
public final boolean isWeekDateSupported()
true, указывающее, что этот GregorianCalendar поддерживает даты недели.- Overrides:
-
isWeekDateSupportedв классеCalendar - Returns:
-
true(всегда) - Since:
- 1.7
- See Also:
getWeekYear
public int getWeekYear()
GregorianCalendar. Даты в неделях от 1 до максимального номера недели года имеют то же значение года недели, которое может быть на один год раньше или позже значения YEAR (год календаря). Этот метод вызывает Calendar.complete() перед вычислением года недели.
- Overrides:
-
getWeekYearв классеCalendar - Returns:
- год недели, представленный этим
GregorianCalendar. Если значениеERAравноBC, год представлен 0 или отрицательным числом: до н. э. 1 — 0, до н. э. 2 — -1, до н. э. 3 — -2 и так далее. - Throws:
-
IllegalArgumentException— если любое из полей календаря неверно в режиме без игнорирования. - Since:
- 1.7
- See Also:
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.
- Overrides:
-
setWeekDateв классеCalendar - Parameters:
-
weekYear- год недели -
weekOfYear- номер недели, основанный наweekYear -
dayOfWeek- значение дня недели: одно из констант для поляDAY_OF_WEEK:SUNDAY, ...,SATURDAY. - Throws:
-
IllegalArgumentException- если какой-либо из заданных спецификаторов даты недействителен или если любое из полей календаря несовместимо с заданными спецификаторами даты в режиме жёсткой обработки - Since:
- 1.7
- See Also:
getWeeksInWeekYear
public int getWeeksInWeekYear()
GregorianCalendar. Например, если дата этого GregorianCalendar равна 31 декабря 2008 года с настройкой совместимости с ISO 8601, этот метод вернет 53 для периода: с 29 декабря 2008 года по 3 января 2010 года, в то время как getActualMaximum(WEEK_OF_YEAR) вернёт 52 для периода: с 31 декабря 2007 года по 28 декабря 2008 года.
- Overrides:
-
getWeeksInWeekYearв классеCalendar - Returns:
- количество недель в году недели.
- Since:
- 1.7
- See Also:
computeFields
protected void computeFields()
complete.- Specified by:
-
computeFieldsв классеCalendar - See Also:
computeTime
protected void computeTime()
- Specified by:
-
computeTimeв классеCalendar - Throws:
-
IllegalArgumentException- если какие-либо поля календаря недействительны. - See Also:
toZonedDateTime
public ZonedDateTime toZonedDateTime()
ZonedDateTime, представляющий ту же точку на временной шкале, что и этот GregorianCalendar. Поскольку этот объект поддерживает переход между юлианским и григорианским календарями, а ZonedDateTime нет, возможно, что результирующий год, месяц и день будут иметь разные значения. Результат будет представлять правильную дату в системе ISO-календаря, которая также будет иметь то же значение для модифицированных юлианских дней.
- Returns:
- объект zoned date-time, представляющий ту же точку на временной шкале, что и этот объект gregorian calendar
- Since:
- 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 для преобразования - Возвращает:
- григорианский календарь, представляющий ту же точку на временной шкале, что и предоставленный объект zoned date-time
- Исключения:
-
NullPointerException- еслиzdtравен null -
IllegalArgumentException- если объект zoned date-time слишком большой, чтобы быть представленным какGregorianCalendar - С:
- 1.8
© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/GregorianCalendar.html