АРІ класу 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) вказує, що було встановлено поточний час.
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. В первом случае будет отображаться ноль перед цифрой.
Більше>>