21/12/2012
En Java, la manipulación de fechas y horas es una tarea común en el desarrollo de aplicaciones. Para ello, la clase Calendar, aunque algo antigua, provee funcionalidades esenciales. Sin embargo, es crucial entender cómo importarla correctamente y cómo utilizar sus métodos para obtener información precisa. Este artículo profundiza en el uso de la clase Calendaren Java, incluyendo la importación de librerías necesarias, obtención de fecha y hora actuales, extracción de información específica (día, mes, año) y la creación de objetos Calendar.

Importando la Librería necesaria
Antes de comenzar a trabajar con la clase Calendar, es fundamental importar la librería adecuada. Esta librería forma parte del paquete java.util, por lo que la importación es sencilla:
import java.util.Calendar;Esta línea de código, colocada al inicio de tu archivo Java, permite el acceso a todas las clases y métodos dentro del paquete java.util, incluyendo la clase Calendar. Sin esta importación, el compilador no reconocerá la clase Calendary el código no compilará.
Obtener la Fecha y Hora Actuales con getInstance()
La manera más sencilla de obtener un objeto Calendarque represente la fecha y hora actuales es utilizando el método estático getInstance(). Este método devuelve un objeto Calendarconfigurado con la zona horaria y la configuración regional del sistema.
Calendar calendario = Calendar.getInstance();Este código crea un objeto Calendarllamado calendario, inicializado con la fecha y hora actuales. A partir de este objeto, podemos acceder a diferentes atributos de la fecha y hora.
Extrayendo Información de la Fecha: Día, Mes y Año
Una vez que tenemos un objeto Calendar, podemos extraer información específica, como el día, mes y año. Para ello, utilizamos el método get(), pasando como parámetro una constante que representa el campo deseado:
int dia = calendario.get(Calendar.DAY_OF_MONTH);int mes = calendario.get(Calendar.MONTH) + 1; // ¡Recuerda que el mes empieza en 0!int año = calendario.get(Calendar.YEAR); Importante: El método get(Calendar.MONTH)devuelve un entero que representa el mes, pero comienza en 0 (enero) y termina en 11 (diciembre). Por lo tanto, es necesario sumar 1 al resultado para obtener el número de mes correcto.
A continuación se muestra un ejemplo completo:
import java.util.Calendar;public class EjemploCalendar { public static void main(String[] args) { Calendar calendario = Calendar.getInstance(); int dia = calendario.get(Calendar.DAY_OF_MONTH); int mes = calendario.get(Calendar.MONTH) + 1; int año = calendario.get(Calendar.YEAR); System.out.println("Fecha actual: " + dia + "/" + mes + "/" + año); }}Creando un Objeto Calendar con una Fecha Específica
Además de obtener la fecha y hora actuales, podemos crear un objeto Calendarcon una fecha y hora específicas. Para lograr esto, se utiliza el método set()del objeto Calendar. Este método permite establecer los valores de los diferentes campos del calendario:
Calendar calendario = Calendar.getInstance();calendario.set(Calendar.YEAR, 2024);calendario.set(Calendar.MONTH, Calendar.JANUARY); //Recuerda que Enero es 0calendario.set(Calendar.DAY_OF_MONTH, 15);calendario.set(Calendar.HOUR_OF_DAY, 10);calendario.set(Calendar.MINUTE, 30);calendario.set(Calendar.SECOND, 0);Este código crea un objeto Calendarque representa la fecha 15 de Enero de 2024 a las 10:30:00.
Comparativa entre Calendar y java.time
Si bien Calendares funcional, la API java.time(introducida en Java 8) ofrece una alternativa más moderna y fácil de usar para el manejo de fechas y horas. java.timeproporciona clases como LocalDate, LocalTimey LocalDateTimeque son inmutables y más intuitivas. A continuación, una tabla comparativa:
| Característica | Calendar | java.time |
|---|---|---|
| Inmutabilidad | Mutable | Inmutable |
| Usabilidad | Menos intuitiva | Más intuitiva |
| Manejo de zonas horarias | Complejo | Simple y eficiente |
| Precisión | Menos precisa en algunos casos | Mayor precisión |
| Disponibilidad | Disponible desde Java 1 | Disponible desde Java 8 |
Para proyectos nuevos, se recomienda utilizar la API java.time, aunque Calendarsigue siendo compatible y útil para proyectos existentes.
Consultas Habituales y Resolución de Problemas
A continuación, se abordan algunas de las dudas más frecuentes sobre el uso de Calendaren Java:
- ¿Cómo obtener el nombre del mes? El método
get(Calendar.MONTH)devuelve un número. Para obtener el nombre del mes, se puede utilizar un array de strings con los nombres de los meses o un método auxiliar que realice la conversión. - ¿Cómo sumar o restar días a una fecha? Se puede utilizar el método
add(Calendar.DAY_OF_MONTH, numeroDeDias)para sumar o restar días a la fecha.numeroDeDiaspuede ser positivo para sumar o negativo para restar. - ¿Cómo comparar dos fechas? Se pueden comparar dos objetos
Calendarusando el métodobefore()oafter(), o comparando los valores de los campos individuales (año, mes, día). - ¿Qué hacer si se manejan fechas antes de 1970? La clase
Calendartiene limitaciones para el manejo de fechas antes de 1970. Para fechas anteriores, se recomienda usar librerías de terceros como Joda-Time o la propiajava.time.
La clase Calendaren Java proporciona la funcionalidad básica para el manejo de fechas y horas. Aunque la API java.timees la opción recomendada para nuevos proyectos, entender Calendarsigue siendo relevante para mantener o actualizar proyectos existentes. Recuerde siempre importar la librería java.util.Calendary tener en cuenta las particularidades del método get(Calendar.MONTH)para evitar errores en sus aplicaciones.
Si quieres conocer otros artículos parecidos a Calendar java: importar librerías y manejo de fechas puedes visitar la categoría Libros y Librerías.
