Java Language
Kalendarz i jego podklasy
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)