Назад Зміст Вперед

5.4. АРІ класу GregorianCalendar

АРІ класу GregorianCalendar

Класи Date, Calendar, DateFormat

Date

Клас Date призначений для роботи з поточними датою і часом і дозволяє відштовхуватися від них для вирішення своїх завдань. При виході нових версій Java частина методів класу була переміщена в класи Calendar і DateFormat.

При імпорті вибирайте java.util.Date.
Клас складається з двох конструкторів:
Date()
Date(long milliseconds)
Перший конструктор без параметрів ініціалізує об'єкт поточною датою і часом. У другому конструкторі ви можете вказати кількість мілісекунд, що пройшли з опівночі 1 січня 1970.
Методи:
  • boolean after (Date date) - якщо об'єкт класу Date містить більш пізню дату, ніж зазначено в параметрі, то повертається true
  • boolean before (Date date) - якщо об'єкт класу Date містить більш ранню дату, ніж зазначено в параметрі, то повертається true
  • int compareTo (Date date) - порівнює дати. Повертає 0, якщо збігаються, від'ємне значення - якщо викликає дата більш рання, позитивне значення - якщо викликає дата пізніша, ніж в параметрі
  • boolean equals (Object object) - якщо дати збігаються, то повертається true
  • long getTime () - повертає кількість мілісекунд, що пройшли з опівночі 1 січня 1970
  • void setTime (long milliseconds) - встановлює час і дату у вигляді числа мілісекунд, що пройшли з півночі 1 січня 1970.
Якщо ви подивитеся документацію, то побачите, що існує безліч методів для отримання або установки окремих компонентів часу і дати, наприклад, getMinutes () / setMinutes () та ін. Всі вони є застарілими і замість них слід використовувати клас Calendar.
Простий приклад виведення дати на екран.
//Створення об'єкту Date
Date date = new Date();
textViewInfo.setText(date.toString());
За допомогою методу getTime () можна відобразити кількість мілісекунд, що пройшли з 1 січня 1970 року, приклад
//Створення об'єкту Date
Date date = new Date();
long millis = date.getTime();
textViewInfo.setText(String.valueOf(millis));

Calendar

Абстрактний клас Calendar дозволяє перетворити час в мілісекундах в більш зручному вигляді - рік, місяць, день, години, хвилини, секунди. Існують також підкласи, наприклад, GregorianCalendar.
Змінна типу boolean під ім'ям 
areFieldsSet вказує, чи були встановлені компоненти часу. 
Змінна fields - це масив цілочисельних значень, що містить компоненти часу. 
Змінна isSet - масив типу boolean, який вказує, чи був встановлений специфічний компонент часу. 
Змінна time (тип long) містить поточний час об'єкта. 
Змінна isTimeSet (тип boolean) вказує, що було встановлено поточний час.
В цьому класі багато методів. Короткий опис частини з них:
  • abstract void add(int field, int value) -додає value до компоненту часу і дати, вказаною в параметрі field (наприклад, Calendar.HOUR). Щоб відняти, використовуйте від'ємне значення.
  • boolean after(Object calendar) -повертає значення true, якщо викликає об'єкт класу Calendar містить більш пізню дату, ніж calendar.
  • boolean before(Object calendar) - повертає значення true, якщо викликаний об'єкт класу Calendar містить більш ранню дату, ніж calendar.
  • final void clear() -обнуляє всі компоненти часу .
  • final void clear(int field) -обнуляє  field
  • int get(int field) - возвращает значение одного компонента, например, Calendar.MINUTE
  • synchronized static Locale[] getAvailableLocales() - возвращает массив объектов класса Locale, содержащий региональные данные
  • synchronized static Calendar getInstance() - возвращает объект класса Calendar для региональных данных и часового пояса по умолчанию. Есть и другие перегруженные версии.
  • final Date getTime() - возвращает объекта класса Date, содержащий время, эквивалентное вызывающему объекту
  • TimeZone getTimeZone() - возвращает часовой пояс
  • final boolean isSet(int field) - возвращает значение true, если указанный компонент времени указан.
  • void set(int field, int value) - устанавливает компоненты даты или времени. Есть перегруженные версии
  • final void setTime(Date date) - устанавливает различные компоненты даты и времени через объект класса Date
  • void setTimeZone(TimeZone timezone) - устанавливает часовой пояс через объект класса TimeZone
Также в календаре определены много различных констант: AUGUST и другие месяцы, SATURDAY и другие дни недели, HOUR и т.д.

GregorianCalendar

Класс GregorianCalendar является подклассом Calendar, который представляет обычный Григорианский календарь. МетодgetInstance() класса Calendar обычно возвращает объект класса GregorianCalendar, инициированный текущей датой и временем согласно региональным настройкам.
У класса есть два поля AD и BC - до нашей эры и наша эра.
Кроме стандартных методов, которые есть в классе Calendar, у GregorianCalendar есть метод isLeapYear() для проверки високосного года.
boolean isLeapYear(int year)
Если год високосный, то возвращается true.
Отсчёт месяцев идёт от нуля, поэтому декабрь будет одиннадцатым месяцем. Чтобы не путаться с такими случаями, проще использовать понятные константы:
GregorianCalendar calendar = new GregorianCalendar(1975,
  Calendar.DECEMBER, 31);
А получать нужные отрезки времени можно через метод get(). Например, узнать, какой месяц содержится в созданной нами дате можно так:
int month = calendar.get(Calendar.MONTH);
System.out.println(month); // вернёт 11
Изменить состояние объекта можно через метод set(). Например, установим новую дату у нашего объекта.
GregorianCalendar calendar = new GregorianCalendar(1975,
  Calendar.DECEMBER, 31);
calendar.set(1976, Calendar.FEBRUARY, 23);
// Убедимся, что возвращает 1 - февраль
System.out.println(calendar.get(Calendar.MONTH));
Можно сдвинуть дату на определённый период с помощью метода add(). Отодвинем дату на два месяца.
GregorianCalendar calendar = new GregorianCalendar(1975,
  Calendar.DECEMBER, 31);
calendar.add(Calendar.MONTH, 2);
System.out.println(calendar.get(Calendar.MONTH));
Методы getTime() и setTime() работают с объектами Date и полезны для преобразования.

GregorianCalendar calendar = new GregorianCalendar(year, month, day);
Date hireDay = calendar.getTime();

TimeZone

Класс TimeZone позволяет работать с часовыми поясами, смещёнными относительно Гринвича, также известного универсальное глобальное время (UTC). Класс также учитывает летнее время.

SimpleTimeZone

Класс SimpleTimeZone - подкласс класса TimeZone и позволяет работать с часовыми поясами в Григорианском календаре.

Класс DateFormat

Класс DateFormat является абстрактным классом, с помощью которого можно форматировать и анализировать показания даты и времени. метод getDateInstance() возвращает экземпляр класса DateFormat, который может форматировать информацию о дате.
Чаще всего используется метод format(), позволяющий вывести дату в нужном формате.

Класс SimpleDateFormat

Класс SimpleDateFormat является подклассом класса DateFormat и позволяет определять собственные шаблоны форматирования для отображения даты и времени.
Символы форматирования строки
  • A - AM или PM
  • d - день месяца (1-31)
  • D - день в году (1-366)
  • H - часы в формате AM/PM (1-12)
  • K - часы в формате суток (1-24)
  • M - минуты (0-59)
  • S - секунды (0-59)
  • W - неделя в году (1-53)
  • y - год
  • z - часовой пояс
и так далее.
Количество повторений символа определяет способ представления даты. Например, можно указать hh:mm:ss, а можно h:m:s. В первом случае будет отображаться ноль перед цифрой.
Більше>>





.