Поиск…


замечания

Начиная с Java 8, Calendar и его подклассы были заменены пакетом java.time и его подпакетами. Они должны быть предпочтительными, если для устаревшего API не требуется Календарь.

Создание объектов календаря

Объекты Calendar могут быть созданы с помощью getInstance() или с помощью конструктора GregorianCalendar .

Важно отметить, что месяцы в Calendar основаны на нулевом значении, что означает, что JANUARY представлен значением int 0. Для обеспечения лучшего кода всегда используйте константы Calendar , такие как Calendar.JANUARY чтобы избежать недоразумений.

Calendar calendar = Calendar.getInstance();
Calendar gregorianCalendar = new GregorianCalendar();
Calendar gregorianCalendarAtSpecificDay = new GregorianCalendar(2016, Calendar.JANUARY, 1);
Calendar gregorianCalendarAtSpecificDayAndTime = new GregorianCalendar(2016, Calendar.JANUARY, 1, 6, 55, 10);

Примечание . Всегда используйте константы месяца: числовое представление вводит в заблуждение , например Calendar.JANUARY имеет значение 0

Увеличение / уменьшение полей календаря

add() и roll() могут использоваться для увеличения / уменьшения полей Calendar .

Calendar calendar = new GregorianCalendar(2016, Calendar.MARCH, 31); // 31 March 2016

Метод add() влияет на все поля и ведет себя эффективно, если нужно добавить или вычесть фактические даты из календаря

calendar.add(Calendar.MONTH, -6);

Вышеуказанная операция удаляет шесть месяцев из календаря, возвращая нас к 30 сентября 2015 года.

Чтобы изменить конкретное поле, не влияя на другие поля, используйте roll() .

calendar.roll(Calendar.MONTH, -6);

Вышеупомянутая операция удаляет шесть месяцев с текущего месяца , поэтому месяц идентифицируется как сентябрь. Никакие другие поля не были скорректированы; год не изменился с этой операцией.

Поиск AM / PM

С классом Calendar легко найти AM или PM.

  Calendar cal = Calendar.getInstance();
  cal.setTime(new Date());
  if (cal.get(Calendar.AM_PM) == Calendar.PM)
      System.out.println("It is PM");

Выделение календарей

Чтобы получить разницу между двумя Calendar , используйте getTimeInMillis() :

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c2.set(Calendar.DATE, c2.get(Calendar.DATE) + 1);

System.out.println(c2.getTimeInMillis() - c1.getTimeInMillis()); //outputs 86400000 (24 * 60 * 60 * 1000)


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow