Calendar en Java: aprende a manejar fechas con esta clase

| Última modificación: 7 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

La clase Calendar en Java es un complemento muy útil si tenemos la intención de manejar fechas. Si bien desde la llegada de Java 8 se introdujeron otras clases como LocalDate o ZonedDateTime, muchas aplicaciones aun hacen uso de las clases Date y Calendar en Java para manipular las fechas. Por eso, en este artículo queremos mostrarte cómo funciona esta clase para que la uses en tus aplicaciones o sepas identificarla en las ya creadas.

Calendar en Java

¿Qué es Calendar en Java?

Calendar en Java es una clase abstracta que hace parte del paquete java.util y es usada para realizar cálculos y organizar fechas de forma más avanzada que la clase Date. Esta última y el Calendar en Java guardan ciertas diferencias, ya que Calendar permite sumar, restar o modificar cualquier campo de una fecha, ya sea día, mes, año, hora, etc. Además de esto, también podemos hacer uso de ella si queremos verificar si una fecha es anterior o posterior a otra.

Si quieres empezar a usar el Calendar en Java, simplemente debes importar la clase, así:

import java.util.Calendar;

Acto seguido, puedes crear una instancia de Calendar haciendo uso de alguno de sus métodos estáticos, ya que no es posible instanciar la clase Calendar en Java directamente:

Calendar calendario = Calendar.getInstance();

Operaciones básicas con Calendar

Una vez que tenemos una instancia de Calendar, podemos comenzar a manipular fechas. Algunas de las operaciones más comunes que puedes realizar con la clase Calendar en Java son:

Crear y configurar una fecha con Calendar

Puedes crear una fecha personalizada estableciendo el año, mes y día, o usando una fecha actual. Solo tienes que hacer lo siguiente:

Calendar calendario = Calendar.getInstance();
calendario.set(Calendar.YEAR, 2023);
calendario.set(Calendar.MONTH, 10); // Recuerda que enero es el mes 0
calendario.set(Calendar.DATE, 15);

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Por medio de este código hemos establecido la fecha a 15 de noviembre de 2023 (los meses en Calendar en Java comienzan en 0, así que noviembre es el mes 10). Si quisiéramos imprimir el resultado, tendríamos que añadir la siguiente línea:

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

Y el resultado sería:

Wed Nov 15 00:00:00 [tu_zona_horaria] 2023

Sumar y restar fechas

Gracias al Calendar en Java también podemos sumar o restar días, meses o años a una fecha de manera muy simple. Te estarás preguntando, ¿para qué se usa esto? Pues es útil en caso de que necesites calcular fechas futuras o pasadas:

calendario.add(Calendar.DATE, 5); // Sumar 5 días
calendario.add(Calendar.MONTH, -1); // Restar 1 mes

En este caso, estamos sumando 5 días a la fecha actual y luego restando un mes.

Formatear fechas

Para mostrar una fecha de manera legible puedes utilizar las clases DateFormat o SimpleDateFormat de Java. Estas te permiten formatear la fecha en el formato que prefieras:

DateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
System.out.println("Fecha: " + formateador.format(calendario.getTime()));

Este código imprimirá la fecha en el formato día/mes/año, por ejemplo:

15/11/2023

Comparar fechas

Calendar también permite comparar dos fechas con los métodos before(), after() y equals():

Calendar otraFecha = Calendar.getInstance();
otraFecha.set(2023, 10, 20);

if (calendario.before(otraFecha)) {
System.out.println("La primera fecha es anterior a la segunda.");
}

En este ejemplo comparamos dos fechas para ver si la primera es anterior a la segunda.

Ejemplo

Ya hemos visto algunas operaciones aleatorias que podemos hacer con el Calendar en Java, ahora veamos un ejemplo más completo que nos muestra cómo manipular fechas con el Calendar en Java y realizar operaciones como formatear, sumar días y mostrar resultados:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class EjemploCalendar {
public static void main(String[] args) {
// Crear instancia de Calendar con la fecha actual
Calendar calendario = Calendar.getInstance();

// Formateador para mostrar la fecha en formato día/mes/año
DateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");

// Mostrar la fecha actual
System.out.println("Fecha actual: " + formateador.format(calendario.getTime()));

// Sumar 10 días a la fecha actual
calendario.add(Calendar.DATE, 10);
System.out.println("Fecha después de sumar 10 días: " + formateador.format(calendario.getTime()));

// Restar 1 mes a la fecha actual
calendario.add(Calendar.MONTH, -1);
System.out.println("Fecha después de restar 1 mes: " + formateador.format(calendario.getTime()));
}
}

Vamos por partes, así entendemos el código:

  1. Creación de la fecha actual: Usamos Calendar.getInstance() para obtener la fecha y hora actuales.
  2. Suma de días: Utilizamos el método add() para sumar 10 días a la fecha actual.
  3. Restar meses: Usamos el mismo método add() para restar un mes.
  4. Formateo: Con SimpleDateFormat mostramos la fecha en un formato más amigable para el usuario.

El resultado dependerá de la fecha actual. Si asumimos que la fecha actual es 7 de octubre de 2024, verías algo así en pantalla:

Fecha actual: 07/10/2024
Fecha después de sumar 10 días: 17/10/2024
Fecha después de restar 1 mes: 17/09/2024

Si te ha interesado este tema y quieres seguir aprendiendo todo sobre Java, te invitamos a que te inscribas en nuestro bootcamp sobre Java, en el que aprenderás todo lo que necesitas saber sobre este popular lenguaje. ¡Anímate ahora y empieza a cambiar tu vida con la mejor formación!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.