Clase Calendar en Java

java_base_web

Hola a todos, hoy os explicaré como funciona la clase Calendar en Java.

Calendar es una clase de Java que nos permite manejar fechas de una manera distinta de como lo hacíamos con Date.

Te recomiendo ver la clase Calendar en la API. Aquí puede verlo.

Lo primero es importar la clase Calendar.

import java.util.Calendar;

Tenemos dos maneras de crear un objeto calendar:


Calendar fecha1 = Calendar.getInstance();
 fecha1.set(2016, 6, 3);
 
 Calendar fecha2 = new GregorianCalendar(2016,7,5);

La primera forma es usando Calendar.getInstance(). Importante, no podemos hacer new Calendar(); al ser una clase abstracta.

Despues de crearlo, usamos el método set para fijar los valores que queremos, año, mes y dia.

La segunda forma es usando otra clase llamada GregorianCalendar que es hija de Calendar, que si podemos hacer un new GregorianCalendar. Para importar la clase GregorianCalendar, necesitamos importarla.

import java.util.GregorianCalendar;

También podemos añadir la hora, minuto y segundo en los parámetros.

Para mostrar la fecha como hacíamos con Date, necesitamos usar el método getTime().

Calendar fecha1 = Calendar.getInstance();
 fecha1.set(2016, 6, 3, 10, 5, 6);
 
 System.out.println(fecha1.getTime());

Veremos esto:

calendar-java-1

En Calendar, podemos modificar cada elemento de la siguiente forma:

Calendar fecha1 = Calendar.getInstance();
 
 fecha1.set(Calendar.YEAR, 2014);
 fecha1.set(Calendar.MONTH, 10);
 fecha1.set(Calendar.DATE, 20);

Simplemente, necesitamos indicar que campo se debe modificar (año, mes, dia, etc) y el valor a modificar. Para el campo, necesitamos usar las constantes de Calendar, puedes verlas en la API.

También podemos mostrar campos concretos con el campo get.


Calendar fecha1 = Calendar.getInstance();

fecha1.set(Calendar.YEAR, 2014);
fecha1.set(Calendar.MONTH, 10);
fecha1.set(Calendar.DATE, 20);

System.out.println("Año: "+fecha1.get(Calendar.YEAR));
System.out.println("Mes: "+fecha1.get(Calendar.MONTH));
System.out.println("Dia: "+fecha1.get(Calendar.DATE));

System.out.println(fecha1.getTime());

Esto es lo que vemos:

calendar-java-2

Tener en cuenta que los meses empiezan en 0, por lo que el mes 10 es noviembre.

Podemos añadir días, meses, años, horas, etc a una fecha en concreto. Para ello, debemos usar el método add, indicamos el campo a añadir y la cantidad que le añadimos. Por ejemplo:


Calendar fecha1 = Calendar.getInstance();

System.out.println("Fecha de hoy: "+fecha1.getTime());

fecha1.add(Calendar.DATE, 2);

System.out.println("Fecha 2 dias mas: "+fecha1.getTime());

También podemos restarle si el número es negativo.

En Calendar también, podemos usar los métodos before y after de la clase Date.

Esto nos indica si una fecha esta después o antes que otra.


System.out.println(fecha1.after(fecha2));
System.out.println(fecha1.before(fecha2));

Por último, tenemos el método roll, que tiene un funcionamiento curioso. Simplemente, es como add, solo que cuando un campo llega la limite no se modifica los otros. Por ejemplo, si aumentamos 22 dias a una fecha y esta llega a mas de 31, el mes no aumentará.


Calendar fecha1 = Calendar.getInstance();

System.out.println("Fecha de hoy: "+fecha1.getTime());
fecha1.roll(Calendar.DATE, 28);

System.out.println("Fecha añadiendo 28 dias: "+fecha1.getTime());

calendar-java-3

Espero que os sea de ayuda. Si tenéis dudas preguntad. Estamos para ayudarte.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *