Spec-Zone.ru › OpenJDK 8

Класс GregorianCalendar

  • java.lang.Object
    • java.util.Calendar
      • java.util.GregorianCalendar
Все реализованные интерфейсы:
Serializable, Cloneable, Comparable<Calendar>

public class GregorianCalendar
extends Calendar

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

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

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

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

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

Неделя года и год недели

Значения, вычисленные для поля WEEK_OF_YEAR, находятся в диапазоне от 1 до 53. Первая неделя календарного года — это самый ранний семидневный период, начинающийся с getFirstDayOfWeek(), который содержит по крайней мере getMinimalDaysInFirstWeek() дней из этого года. Таким образом, он зависит от значений getMinimalDaysInFirstWeek(), getFirstDayOfWeek(), и дня недели 1 января. Недели между 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
С:
JDK1.1
См. также:
TimeZone, Сериализованная форма

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

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

Calendar.Builder

Поля

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

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

static int BC

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

Поля, унаследованные от класса 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)

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

Object clone()

Создаёт и возвращает копию этого объекта.

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.

TimeZone getTimeZone()

Получает часовой пояс.

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)

Устанавливает дату изменения GregorianCalendar.

void setTimeZone(TimeZone zone)

Устанавливает часовой пояс с указанным значением часового пояса.

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

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

ZonedDateTime toZonedDateTime()

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

Методы, унаследованные от класса java.util.Calendar

after, before, clear, clear, compareTo, complete, get, getAvailableCalendarTypes, getAvailableLocales, getDisplayName, getDisplayNames, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, 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, Значения постоянных полей

AD

public static final int AD

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

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

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

GregorianCalendar

public GregorianCalendar()

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

GregorianCalendar

public GregorianCalendar(TimeZone zone)

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

Параметры:
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 до 11, 0 — январь).
dayOfMonth — значение, используемое для установки поля календаря DAY_OF_MONTH.

GregorianCalendar

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

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

Параметры:
year — значение, используемое для установки поля календаря YEAR.
month — значение, используемое для установки поля календаря MONTH (значение месяца от 0 до 11, 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 до 11, 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 , если данный год високосный. Для указания годов до н.э., необходимо указать отрицательное значение. Например, год до н.э. 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 декабря 1996 г. (в юлианском календаре). Следовательно, даты с 28 декабря 1969 г. по 9 января 1970 г. не существуют.

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

getActualMaximum

public int getActualMaximum(int field)

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

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

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

clone

public Object clone()

Описание скопировано из класса: Calendar

Создаёт и возвращает копию этого объекта.

Переопределяет:
clone в классе Calendar
Возвращает:
копию этого объекта.
См. также:
Cloneable

getTimeZone

public TimeZone getTimeZone()

Описание скопировано из класса: Calendar

Получает часовой пояс.

Переопределяет:
getTimeZone в классе Calendar
Возвращает:
объект часового пояса, связанный с этим календарём.

setTimeZone

public void setTimeZone(TimeZone zone)

Описание скопировано из класса: Calendar

Устанавливает часовой пояс заданным значением часового пояса.

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

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, которая также будет иметь то же значение для изменённых юлианских дней.

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

from

public static GregorianCalendar from(ZonedDateTime zdt)

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

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

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

Параметры:
zdt - объект даты и времени с часовым поясом для преобразования
Возвращает:
объект календаря Gregorian, представляющий ту же точку на временной шкале, что и предоставленное время с часовым поясом
Выбрасывает:
NullPointerException - если zdt равно null
IllegalArgumentException - если время с часовым поясом слишком велико для представления как 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.

Spec-Zone.ru

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