Для более удобной работы с датой и временем в Java в свое время был добавлен класс Calendar как альтернатива классу Date (про дате можно почитать на русском тут). Оба класса находятся в библиотеке java.util.
Calendar весьма удобный класс, который позволяет легко манипулировать месяцами, днями, неделями и тд, а также получать их. Для удобства работы с классом Calendar желательно запомнить константы, с которыми он работает:
- DAY_OF_YEAR — день года (0- 365);
- DAY_OF_MONTH — день месяца( какой по счету день в месяце 0 — 31);
- WEEK_OF_MONTH — неделя месяца;
- WEEK_OF_YEAR — неделя в году;
- MONTH — номер месяца;
- Year — номер года;
- Calendar.ERA — эра.
Давайте рассмотрим простой пример как создать экземпляр данного класса:
В примере выше мы создаем экземпляр класса GregorianCalendar, который является подклассом Calendar и представляет обычный Григорианский календарь.
Метод getInstance() класса Calendar обычно возвращает объект класса GregorianCalendar, инициированный текущей датой и временем согласно региональным настройкам.
GregorianCalendar в отличии от Calendar имеет один дополнительный метод isLeapYear() для проверки високосного года:
- boolean isLeapYear(int year)
Стандартные методы Calendar
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) - сбрасывает значение в указанном поле
int get(int field) - возвращает значение одного указанного поля
synchronized static Locale[] getAvailableLocales() - возвращает массив Locale, которые содержат региональные данные
final Date getTime() - конвертирует в класс Date
TimeZone getTimeZone() - возвращает часовой пояс
final boolean isSet(int field) - возвращает значение true, если указанное поле заполнено.
void set(int field, int value) - устанавливает новое значение для переданного поля (есть перегруженные версии).
final void setTime(Date date) - конвертирует класс Date в Calendar
void setTimeZone(TimeZone timezone) - устанавливает часовой пояс
Конвертация класса Calendar
Конвертируем Calendar в класс Date:
inal Date getTime() - конвертирует в класс Date
Конвертируем Calendar в класс LocalDateTime:
Конвертируем Calendar в строку (String)
Для того чтобы с конвертировать дату (Date) в нужный нам формат, необходимо использовать класс SimpleDateFormat.
Посмотреть этот класс с примерами можно тут.