Класс 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, основываясь на текущем времени в заданном часовом поясе с заданной локалью. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
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илиaLocalenull
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 для января. -
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 , если заданный год високосный. Для указания года до нашей эры необходимо указать 1 - year number. Например, год до нашей эры 4 указывается как -3.- Параметры:
-
year- заданный год. - Возвращает:
-
true, если заданный год високосный;falseв противном случае.
getCalendarType
public String getCalendarType()
"gregory" в качестве типа календаря.- Overrides:
-
getCalendarTypeв классеCalendar - Returns:
"gregory"- Since:
- 1.8
- See Also:
equals
public boolean equals(Object obj)
GregorianCalendar с указанным Object. Результатом является true тогда и только тогда, когда аргумент является объектом GregorianCalendar, представляющим ту же временную метку (смещение миллисекунд от эпохи Epoch) при тех же параметрах Calendar и дате изменения григорианского календаря, что и этот объект.- Overrides:
-
equalsв классеCalendar - Parameters:
-
obj- объект для сравнения. - Returns:
-
trueесли этот объект равенobj;falseв противном случае. - See Also:
hashCode
public int hashCode()
GregorianCalendar.- Overrides:
-
hashCodeв классеCalendar - Returns:
- значение хэш-кода для этого объекта.
- See Also:
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)
GregorianCalendar экземпляре. Наибольшее минимальное значение определяется как наибольшее значение, возвращаемое getActualMinimum(int) для любого возможного значения времени, с учётом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.- Определено в:
-
getGreatestMinimumв классеCalendar - Параметры:
-
field- поле календаря. - Возвращает:
- наибольшее минимальное значение для заданного поля календаря.
- См. также:
Наименьшее максимальное значение
public int getLeastMaximum(int field)
GregorianCalendar экземпляре. Наименьшее максимальное значение определяется как наименьшее значение, возвращаемое getActualMaximum(int) для любого возможного значения времени, с учётом текущих значений методов getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone.- Определено в:
-
getLeastMaximumв классеCalendar - Параметры:
-
field- поле календаря - Возвращает:
- наименьшее максимальное значение для заданного поля календаря.
- См. также:
getActualMinimum
public int getActualMinimum(int field)
getFirstDayOfWeek, getMinimalDaysInFirstWeek, getGregorianChange и getTimeZone. Например, если дата перехода на григорианский календарь — 10 января 1970 года, а дата этого GregorianCalendar — 20 января 1970 года, фактическое минимальное значение поля DAY_OF_MONTH равно 10, потому что предыдущая дата — 27 декабря 1969 года (в юлианском календаре). Поэтому даты с 28 декабря 1969 года по 9 января 1970 года не существуют.
- Overrides:
-
getActualMinimumв классеCalendar - Parameters:
-
field— поле календаря - Returns:
- минимальное значение заданного поля для значения времени этого
GregorianCalendar - Since:
- 1.2
- See Also:
Максимальное значение
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
- См. также:
Поддерживает ли даты недели
public final boolean isWeekDateSupported()
true, показывая, поддерживает ли этот GregorianCalendar даты недели.- Переопределяет:
-
isWeekDateSupportedв классеCalendar - Возвращает:
-
true(всегда) - С:
- 1.7
- См. также:
getWeekYear
public int getWeekYear()
GregorianCalendar. Даты в неделях между 1 и максимальным номером недели года имеют одинаковое значение года недели, которое может быть на один год раньше или позже значения YEAR (год календаря). Этот метод вызывает Calendar.complete() перед вычислением года недели.
- Overrides:
-
getWeekYearв классеCalendar - Возвращает:
- год недели, представленный этим
GregorianCalendar. Если значениеERAравноBC, год представлен 0 или отрицательным числом: до н. э. 1 — 0, до н. э. 2 — -1, до н. э. 3 — -2 и так далее. - Исключения:
-
IllegalArgumentException- если любое из полей календаря недействительно в режиме без смягчения. - С:
- 1.7
- См. также:
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-календаря, которая также будет тем же значением для модифицированных юлианских дней.
- Возвращает:
- объект zoned date-time, представляющий ту же точку на временной шкале, что и этот григорианский календарь
- С:
- 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, 2023, 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/21/docs/api/java.base/java/util/GregorianCalendar.html