Test: Descubre qué bootcamp es para ti

whatsapp keepcoding

Java.time.format.DateTimeFormatter: ¿Cómo formatear fechas y horas fácilmente?

| Última modificación: 7 de enero de 2025 | Tiempo de Lectura: 3 minutos

Le contaba a Francis, un amigo de toda la vida, que una vez me tocó trabajar en una aplicación que requería registrar eventos en múltiples husos horarios y con diferentes formatos. Para mí fue un tormento, porque no sabía bien cómo hacerlo y trataba de hacerlo todo manual. Él, muy amablemente, me contó sobre java.time.format.DateTimeFormatter e iluminó mi camino inmediatamente. Al fin pude simplificar mi vida como desarrollador y ahorrar tiempo al trabajar con fechas y horas en Java. Voy a mostrarte cómo se usa para que también lo pongas en práctica cuanto antes.

java.time.format.DateTimeFormatter en Java qué es

¿Qué es Java.time.format.DateTimeFormatter?

Quiero que pienses en el trabajo que hace un traductor: convierte un texto de un idioma a otro para que se pueda entender, ¿verdad? Lo mismo hace java.time.format.DateTimeFormatter, ya que es una clase que toma una fecha y hora y la convierte a un formato específico que tú entiendas. De hecho, puede ser en diferentes estilos, como “dd-MM-yyyy”, “yyyy/MM/dd HH:mm:ss”, etc.

Entonces, esta clase de Java te permite formatear y analizar objetos de fecha y hora, como LocalDate, LocalDateTime o ZonedDateTime, utilizando patrones predefinidos o personalizados.

Así que, podríamos decir que este traductor (DateTimeFormatter) te servirá para interpretar y convertir cadenas de texto de fechas y horas que un usuario ingresa, a objetos LocalDateTime u otros objetos de fecha y hora.

Otro escenario en el que lo podrías aprovechar, sería para las configuraciones regionales, porque te mostraría fechas y horas en el formato adecuado, según las convenciones locales de diferentes regiones del mundo.

Características

  • Flexibilidad: Soporta patrones predefinidos y personalizados.
  • Inmutabilidad
  • Seguridad en hilos: Su diseño inmutable la hace ideal para entornos concurrentes
  • Compatibilidad: Permite trabajar con múltiples clases de la API de fechas y horas de Java.

Cómo usar Java.time.format.DateTimeFormatter

Formatear fechas y horas

Te contaba al principio que, puedes usar patrones predefinidos o personalizados para formatear fechas y horas. Voy a mostrarte cómo hacerlo con un ejemplo básico:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class FormatoFechas {
public static void main(String[] args) {
// Crear un objeto DateTimeFormatter con un patrón personalizado
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");

// Obtener la fecha y hora actuales
LocalDateTime ahora = LocalDateTime.now();

// Formatear la fecha
String fechaFormateada = ahora.format(formatter);
System.out.println("Fecha formateada: " + fechaFormateada);
}
}

Puedes ver que, en este caso, el formato utilizado es dd/MM/yyyy HH:mm:ss, que muestra el día, mes, año, hora, minutos y segundos.

Patrones personalizados comunes

Quiero dejarte una lista de algunos patrones que puedes usar:

  • yyyy-MM-dd: Fecha en formato ISO (2025-01-07).
  • dd/MM/yyyy: Fecha en formato común europeo (07/01/2025).
  • EEEE, MMM dd, yyyy HH:mm:ss a: Día completo, mes, día, año, hora con AM/PM (martes, ene 07, 2025 10:30:45 AM).

Cómo convertir texto a fecha

En este ejemplo he decidido mostrarte que, si necesitas analizar una cadena para convertirla en un objeto de fecha y hora, puedes usar el método parse:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class ParsearFechas {
public static void main(String[] args) {
String fechaTexto = "07/01/2025 10:30:45";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");

// Convertir texto a LocalDateTime
LocalDateTime fecha = LocalDateTime.parse(fechaTexto, formatter);
System.out.println("Fecha parseada: " + fecha);
}
}

Uso de patrones predefinidos

Ten en cuenta que, la clase DateTimeFormatter incluye varios patrones predefinidos que puedes usar directamente, como ISO_DATE o RFC_1123_DATE_TIME.

Aquí tienes un ejemplo muy fácil de entender:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class PatronesPredefinidos {
public static void main(String[] args) {
ZonedDateTime ahora = ZonedDateTime.now();

// Usar el patrón ISO_DATE_TIME
String fechaIso = ahora.format(DateTimeFormatter.ISO_DATE_TIME);
System.out.println("Fecha en formato ISO: " + fechaIso);
}
}

Más allá de lo básico: Construir patrones complejos

Por supuesto, puede que en algún momento necesites formatos más avanzados, entonces puedes usar DateTimeFormatterBuilder para personalizarlos.

Te muestro en este código cómo sería:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;

public class PatronesComplejos {
public static void main(String[] args) {
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd HH:mm:ss")
.optionalStart()
.appendZoneOrOffsetId()
.optionalEnd()
.toFormatter();

ZonedDateTime ahora = ZonedDateTime.now();
System.out.println("Fecha con zona horaria: " + ahora.format(formatter));
}
}

Ahora ya estás al tanto de que Java.time.format.DateTimeFormatter es esencial para cualquier desarrollador que trabaje con fechas y horas en Java. De verdad que es grandiosa su capacidad de formatear y analizar fechas de manera flexible y segura. Por eso se ha convertido en un recurso indispensable.

¿Te gustaría dominar herramientas como Java.time.format.DateTimeFormatter y mucho más? En KeepCoding te ofrecemos un Bootcamp de Java Full Stack diseñado para llevarte de cero a experto en tiempo récord. ¡Apúntate hoy mismo y comienza a transformar tu futuro en el sector IT!

Posts más leídos