Шаг 23.
Язык программирования Java.
Класс GregorianCalendar

На этом шаге мы рассмотрим класс GregorianCalendar

На предыдущем шаге мы использовали класс Date. Экземпляр класса Date находится в состоянии, которое отражает конкретный момент времени. При использовании класса Date совсем не обязательно знать о формате даты. Но класс Date не очень удобен для работы с датами. Разработчики библиотеки Java считали, что представление даты, например "December 31, 1999, 23:59:59", является совершенно произвольным и должно зависеть от календаря. В нашем примере представление подчиняется григорианскому календарю, но есть и другие календари, например китайский.

Разработчики библиотеки Java решили отделить вопросы, связанные с отслеживанием моментов времени, от вопросов их представления. Таким образом, стандартная библиотека Java содержит два отдельных класса: класс Date, представляющий момент времени, и класс GregorianCalendar, описывающий свойства календаря в целом. Такой подход является грамотным решением, вполне отвечающий принципам ООП.

Класс GregorianCalendar содержит намного больше методов, чем класс Date. В частности, в нем есть несколько полезных конструкторов:

Таблица 1. Описание конструкторов
Конструктор Описание
GregorianCaledar () Создает объект типа GregorianCalendar, представляющий текущее время для часового пояса с учетом заданных по умолчанию региональных настроек
GregorianCaledar (int year, int month, int day) Создает объект типа GregorianCalendar, представляющий указанную дату
GregorianCaledar (int year, int month, int day, int hour, int minutes, int seconds) Создает объект типа GregorianCalendar, представляющий указанную дату и время

У данного класса есть методы, способные изменять поля экземпляра данного класса, и есть методы, которые могут лишь просматривать поля, не изменяя их. Методы, которые изменяют поля, называются модифицирующими методами, а методы, которые не изменяют, - методами доступа. В именах методов доступа принято писать префикс get, а в именах модифицирующих методов - префикс set. В таблицах 2 и 3 приведены наиболее важные модифицирующие методы и методы доступа класса GregorianCalendar.

Таблица 2. Методы доступа
Метод Описание
int get (int field) Возвращает значение из указанного поля (параметр field):
  • Calendar.ERA
  • Calendar.YEAR, Calendar.MONTH
  • Calendar.WEEK_OF_YEAR
  • Calendar.DAY_OF_YEAR, Calendar.DAY_OF_WEEK, Calendar.DAY_OF_WEEK_IN_MONTH
  • Calendar.AP_PM, Calendar.HOUR, Calendar.HOUR_OF_DAY
  • Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND
  • Calendar.ZONE_OFFSET
  • Calendar.DST_OFFSET
int getFirstDayOfWeek () Получает первый день недели с учетом региональных настроек текущего пользователя
Date getTime () Возвращает момент времени, представленный текущим значением данного календарного объекта

Таблица 3. Модифицирующие методы
Метод Описание
void set (int field, int value) Устанавливает новое значение в указанном поле.

Входные параметры:
  • field - Одна из констант, допустимых для метода get из таблицы 2
  • value - Новое значение
void set (int year, int month, int day) Устанавливает новые значения в указанных полях.

Входные параметры:
  • year - Год
  • month - Месяц (отсчет начинается с 0, то есть 0 - январь)
  • day - День
void set (int year, int month, int day, int hour, int minutes, int seconds) Устанавливает новые значения в указанных полях.

Входные параметры:
  • year - Год
  • month - Месяц (отсчет начинается с 0, то есть 0 - январь)
  • day - День
  • hour - Час (от 0 до 23)
  • minutes - Минуты (от 0 до 59)
  • seconds - Секунды (от 0 до 59)
void add (int field, int amount) Добавляет указанную величину к полю

Входные параметры:
  • field - Изменяемое поле (одна из констант, допустимых для метода get из таблицы 2)
  • amount - Добавляемая величина, на которую изменяется поле (может быть отрицательным)
void setTime (Date time) Устанавливает заданный момент времени.

Входные параметры:
  • time - Момент времени

На следующем шаге мы рассмотрим пример использования класса GregorianCalendar

Предыдущий шаг Содержание Следующий шаг