Найти тему
Java в примерах

Java класс Calendar разбираем с примерами в коде

Оглавление

Для более удобной работы с датой и временем в 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.

Посмотреть этот класс с примерами можно тут.