Calendar cal = Calendar.getInstance();//Создание
cal.setTime(period);//Установить дату
cal.add(Calendar.MONTH, -1);//Минус 1 месяц
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));//Последний день месяца
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));//Первый день месяца
cal.getTime();//Вывести дату Date
У класса много методов. Вкратце опишем часть из них:
- 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 и т.д.
//Создаем произвольную дату
Calendar calendar = Calendar.getInstance();
calendar.set(2019, 0, 01);
Date period=calendar.getTime();
//Можно сравнить
period.before(contract.getFrom())