На этом шаге мы рассмотрим класс GregorianCalendar
На предыдущем шаге мы использовали класс Date. Экземпляр класса Date находится в состоянии, которое отражает конкретный момент времени. При использовании класса Date совсем не обязательно знать о формате даты. Но класс Date не очень удобен для работы с датами. Разработчики библиотеки Java считали, что представление даты, например "December 31, 1999, 23:59:59", является совершенно произвольным и должно зависеть от календаря. В нашем примере представление подчиняется григорианскому календарю, но есть и другие календари, например китайский.
Разработчики библиотеки Java решили отделить вопросы, связанные с отслеживанием моментов времени, от вопросов их представления. Таким образом, стандартная библиотека Java содержит два отдельных класса: класс Date, представляющий момент времени, и класс GregorianCalendar, описывающий свойства календаря в целом. Такой подход является грамотным решением, вполне отвечающий принципам ООП.
Класс GregorianCalendar содержит намного больше методов, чем класс Date. В частности, в нем есть несколько полезных конструкторов:
Конструктор | Описание |
---|---|
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.
Метод | Описание |
---|---|
int get (int field) | Возвращает значение из указанного поля (параметр field):
|
int getFirstDayOfWeek () | Получает первый день недели с учетом региональных настроек текущего пользователя |
Date getTime () | Возвращает момент времени, представленный текущим значением данного календарного объекта |
Метод | Описание |
---|---|
void set (int field, int value) | Устанавливает новое значение в указанном поле.
Входные параметры:
|
void set (int year, int month, int day) | Устанавливает новые значения в указанных полях.
Входные параметры:
|
void set (int year, int month, int day, int hour, int minutes, int seconds) | Устанавливает новые значения в указанных полях.
Входные параметры:
|
void add (int field, int amount) | Добавляет указанную величину к полю Входные параметры:
|
void setTime (Date time) | Устанавливает заданный момент времени.
Входные параметры:
|
На следующем шаге мы рассмотрим пример использования класса GregorianCalendar