Trabajo con fechas en Java: revisión de bibliotecas y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con fechas en Java: bibliotecas y herramientas



Trabajar con fechas y horas es una de las tareas clave en cualquier aplicación. En Java, durante mucho tiempo, las clases estándar java.util.Date y java.util.Calendar fueron criticadas por su incomodidad, mutabilidad y mal soporte de zonas horarias. Sin embargo, con la llegada de Java 8 la situación cambió radicalmente. En este artículo analizaremos las principales bibliotecas y herramientas para trabajar con fechas en Java, que te ayudarán a escribir código limpio y confiable.



1. Biblioteca estándar java.time (Java 8+)



A partir de Java 8, los desarrolladores tienen acceso al potente paquete java.time, basado en el estándar ISO-8601. Esta es la forma recomendada de trabajar con fechas y horas. Las clases principales son:



  • LocalDate — fecha sin hora (año, mes, día).
  • LocalTime — hora sin fecha (horas, minutos, segundos, nanosegundos).
  • LocalDateTime — combinación de fecha y hora.
  • ZonedDateTime — fecha y hora con zona horaria.
  • Instant — momento en UTC (para tiempo de máquina).
  • Duration y Period — para trabajar con intervalos.


Ejemplo: creación y formateo de fecha



import java.time.LocalDate;import java.time.format.DateTimeFormatter;

public class DateExample { public static void main(String[] args) { // Fecha actual LocalDate today = LocalDate.now(); System.out.println("Hoy: " + today);

// Creación de una fecha específica LocalDate birthDate = LocalDate.of(1990, 5, 15); System.out.println("Fecha de nacimiento: " + birthDate);

// Formateo DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); String formatted = birthDate.format(formatter); System.out.println("Fecha formateada: " + formatted);

// Análisis de cadena String dateStr = "2023-12-31"; LocalDate parsedDate = LocalDate.parse(dateStr); System.out.println("Analizada: " + parsedDate); }}


Ejemplo: cálculo de diferencia entre fechas



import java.time.LocalDate;import java.time.Period;import java.time.temporal.ChronoUnit;

public class DateDifference { public static void main(String[] args) { LocalDate start = LocalDate.of(2020, 1, 1); LocalDate end = LocalDate.of(2024, 3, 15);

Period period = Period.between(start, end); System.out.println("Diferencia: " + period.getYears() + " años, " + period.getMonths() + " meses, " + period.getDays() + " días");

long daysBetween = ChronoUnit.DAYS.between(start, end); System.out.println("Total de días: " + daysBetween); }}


2. Joda-Time (para versiones antiguas de Java)



Antes de la llegada de java.time, el estándar de facto era la biblioteca Joda-Time. Proporcionaba clases inmutables convenientes y soporte para zonas horarias. Si trabajas con Java 7 o inferior, Joda-Time es una excelente opción.



Inclusión (Maven):

<dependency>    <groupId>joda-time</groupId>    <artifactId>joda-time</artifactId>    <version>2.12.7</version></dependency>


Ejemplo: trabajo con Joda-Time



import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;

public class JodaExample { public static void main(String[] args) { // Fecha y hora actual DateTime now = new DateTime(); System.out.println("Ahora: " + now);

// Creación de fecha DateTime specificDate =

Recommendations