Java Language
Calendario e le sue sottoclassi
Ricerca…
Osservazioni
A partire da Java 8, Calendar e le sue sottoclassi sono state sostituite dal pacchetto java.time e dai relativi pacchetti secondari . Dovrebbero essere preferiti, a meno che un'API legacy non richieda Calendar.
Creazione di oggetti del calendario
Calendar oggetti del Calendar possono essere creati usando getInstance() o usando il costruttore GregorianCalendar .
È importante notare che i mesi in Calendar sono a base zero, il che significa che JANUARY è rappresentato da un valore int 0. Per fornire un codice migliore, utilizzare sempre le costanti del Calendar , ad esempio Calendar.JANUARY per evitare equivoci.
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);
Nota : usa sempre le costanti del mese: la rappresentazione numerica è fuorviante , ad esempio Calendar.JANUARY ha il valore 0
Aumentare / diminuire i campi del calendario
add() e roll() possono essere usati per aumentare / diminuire i campi del Calendar .
Calendar calendar = new GregorianCalendar(2016, Calendar.MARCH, 31); // 31 March 2016
Il metodo add() effetto su tutti i campi e si comporta in modo efficace se uno dovesse aggiungere o sottrarre date effettive dal calendario
calendar.add(Calendar.MONTH, -6);
L'operazione sopra riportata rimuove sei mesi dal calendario, riportandoci al 30 settembre 2015.
Per cambiare un particolare campo senza influenzare gli altri campi, usa roll() .
calendar.roll(Calendar.MONTH, -6);
L'operazione sopra riportata rimuove sei mesi dal mese corrente, quindi il mese viene identificato come settembre. Nessun altro campo è stato modificato; l'anno non è cambiato con questa operazione.
Trovare AM / PM
Con la classe Calendar è facile trovare AM o PM.
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
if (cal.get(Calendar.AM_PM) == Calendar.PM)
System.out.println("It is PM");
Sottrai i calendari
Per ottenere una differenza tra due Calendar , usa il metodo 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)