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)