Java Language
Kalender och dess underklasser
Sök…
Anmärkningar
Från Java 8 har Calendar
och dess underklasser ersatts av java.time- paketet och dess subpaket. De bör föredras, såvida inte en äldre API kräver kalender.
Skapa kalenderobjekt
Calendar
kan skapas med hjälp av getInstance()
eller med konstruktören GregorianCalendar
.
Det är viktigt att märka att månader i Calendar
är nollbaserade, vilket innebär att JANUARI representeras av ett int
värde 0. För att ge en bättre kod, använd alltid Calendar
, som Calendar.JANUARY
att undvika missförstånd.
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);
Obs : Använd alltid månadskonstanter: Den numeriska representationen är vilseledande , t.ex. Calendar.JANUARY
har värdet 0
Öka / minska kalenderfält
add()
och roll()
kan användas för att öka / minska Calendar
.
Calendar calendar = new GregorianCalendar(2016, Calendar.MARCH, 31); // 31 March 2016
Metoden add()
påverkar alla fält och uppför sig effektivt om man skulle lägga till eller subtrahera faktiska datum från kalendern
calendar.add(Calendar.MONTH, -6);
Ovanstående operation tar bort sex månader från kalendern och tar oss tillbaka till 30 september 2015.
För att ändra ett visst fält utan att påverka de andra fälten, använd roll()
.
calendar.roll(Calendar.MONTH, -6);
Ovanstående operation tar bort sex månader från den aktuella månaden , så månaden identifieras som september. Inga andra fält har justerats. året har inte förändrats med denna operation.
Hitta AM / PM
Med Kalenderklass är det lätt att hitta AM eller PM.
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
if (cal.get(Calendar.AM_PM) == Calendar.PM)
System.out.println("It is PM");
Dra bort kalendrar
För att få en skillnad mellan två Calendar
använder getTimeInMillis()
metoden 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)