Szukaj…


Uwagi

Począwszy od Java 8, Calendar i jego podklasy zostały zastąpione przez pakiet java.time i jego paczki. Powinny być preferowane, chyba że starszy interfejs API wymaga Kalendarza.

Tworzenie obiektów kalendarza

Obiekty Calendar można tworzyć za pomocą getInstance() lub konstruktora GregorianCalendar .

Ważne jest, aby zauważyć, że miesiące w Calendar są oparte na zerach, co oznacza, że STYCZEŃ jest reprezentowany przez wartość int 0. Aby zapewnić lepszy kod, zawsze używaj stałych Calendar , takich jak Calendar.JANUARY aby uniknąć nieporozumień.

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);

Uwaga : Zawsze używaj stałych miesiąca: Przedstawienie liczbowe wprowadza w błąd , np. Calendar.JANUARY ma wartość 0

Zwiększanie / zmniejszanie pól kalendarza

add() i roll() mogą być używane do zwiększania / zmniejszania pól Calendar .

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

Metoda add() wpływa na wszystkie pola i zachowuje się skutecznie, jeśli doda się lub odejmie rzeczywiste daty z kalendarza

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

Powyższa operacja usuwa sześć miesięcy z kalendarza, zabierając nas z powrotem do 30 września 2015 r.

Aby zmienić określone pole bez wpływu na inne pola, użyj funkcji roll() .

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

Powyższa operacja usuwa sześć miesięcy z bieżącego miesiąca , więc miesiąc jest identyfikowany jako wrzesień. Żadne inne pola nie zostały dostosowane; w tej operacji rok się nie zmienił.

Znalezienie AM / PM

Z klasą Kalendarz łatwo jest znaleźć AM lub PM.

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

Odejmowanie kalendarzy

Aby uzyskać różnicę między dwoma Calendar , użyj metody 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow