Java Language
Calendario y sus subclases
Buscar..
Observaciones
A partir de Java 8, Calendar
y sus subclases han sido reemplazados por el paquete java.time y sus subpaquetes. Deberían ser preferibles, a menos que una API heredada requiera Calendario.
Creando objetos de calendario
Calendar
objetos del Calendar
se pueden crear usando getInstance()
o usando el constructor GregorianCalendar
.
Es importante tener en cuenta que los meses en el Calendar
están basados en cero, lo que significa que ENERO se representa con un valor int
0. Para proporcionar un mejor código, siempre use las constantes del Calendar
, como el Calendar.JANUARY
. ENERO para evitar malentendidos.
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 : utilice siempre las constantes del mes: la representación numérica es engañosa , por ejemplo, Calendar.JANUARY
tiene el valor 0
Aumentar / disminuir los campos del calendario
add()
y roll()
se pueden usar para aumentar / disminuir los campos del Calendar
.
Calendar calendar = new GregorianCalendar(2016, Calendar.MARCH, 31); // 31 March 2016
El método add()
afecta a todos los campos y se comporta de manera efectiva si se agregaran o restaran fechas reales del calendario
calendar.add(Calendar.MONTH, -6);
La operación anterior elimina seis meses del calendario y nos lleva al 30 de septiembre de 2015.
Para cambiar un campo en particular sin afectar a los otros campos, use roll()
.
calendar.roll(Calendar.MONTH, -6);
La operación anterior elimina seis meses del mes actual, por lo que el mes se identifica como septiembre. Ningún otro campo ha sido ajustado; El año no ha cambiado con esta operación.
Encontrando AM / PM
Con la clase Calendario es fácil encontrar 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");
Restando calendarios
Para obtener una diferencia entre dos Calendar
, use el método 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)