¿Cómo convertir string a date en Java?

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

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes cómo convertir string a Date en Java?

La conversión de datos es un tópico del que se habla muchísimo en el entorno de los lenguajes de programación. Muchas veces sucede que el usuario ingresa un tipo de dato que no es el correcto dentro de la caja de Textbox y, si no hemos optimizado nuestro programa para que convierta la entrada del usuario en un tipo de dato válido, puede ser complejo solucionar ciertos errores o ejecutar algunas acciones. Por eso el día de hoy queremos enseñarte cómo convertir un string a date en Java, una de las conversiones más usuales en este lenguaje.

convertir string a date en Java

¿Qué necesitas para convertir un string a date en Java?

Parte del proceso de entender la conversión de string a date en Java es comprender cómo funciona la API de fechas y horas de Java. Desde Java 8 fueron introducidas nuevas clases dentro del paquete java.time, tales como LocalDate, LocalTime y LocalDateTime, estas clases reemplazaron a las antiguas clases como Date, DateFormat y Calendar. Desglosemos un poco cada una de las clases actuales con las que se puede trabajar la conversión de string a Date en Java:

  • LocalDate: Para trabajar con fechas sin incluir la hora.
  • LocalTime: Para manejar solo la hora (sin fecha).
  • LocalDateTime: Para combinar tanto la fecha como la hora en una sola clase.

Estas clases nos ayudan a convertir un string a date en Java, es decir, podemos hacer que una cadena de texto que representa una fecha o una hora, se convierta en un objeto de tipo LocalDate, LocalTime o LocalDateTime. Pero bueno, la gran pregunta es, ¿cómo hacer esto?¿cómo convertir un string a Date en Java?

Convirtamos un string a date en Java por medio de un ejemplo

Tenemos una cadena de texto que representa una fecha: «2020-06-10». Gracias a Java 8 podemos convertir ese string en una fecha, solo usando el método parse() de la clase LocalDate. Así:

import java.time.LocalDate;

public class ConvertirStringADate {
public static void main(String[] args) {
LocalDate fecha = LocalDate.parse("2020-06-10");
System.out.println("Día: " + fecha.getDayOfMonth());
System.out.println("Mes: " + fecha.getMonthValue());
System.out.println("Año: " + fecha.getYear());
}
}

El resultado en consola sería:

Día: 10
Mes: 6
Año: 2020

En este caso, la cadena «2020-06-10» se convirtió en un objeto de tipo LocalDate. Este es el formato más estándar que sigue el método parse(), en donde las fechas se deben escribir en formato YYYY-MM-DD.

¿Cómo manejar horas con LocalTime?

Si no solo necesitas convertir string a Date en Java, sino que además también necesitas trabajar con horas, puedes hacer uso de la clase LocalTime. Tenemos, por ejemplo, la siguiente cadena que representa la hora: «12:23:44». La conversión es bastante similar a como procedimos con las fechas:

import java.time.LocalTime;

public class ConvertirStringAHora {
public static void main(String[] args) {
LocalTime hora = LocalTime.parse("12:23:44");
System.out.println("Hora: " + hora.getHour());
System.out.println("Minuto: " + hora.getMinute());
System.out.println("Segundo: " + hora.getSecond());
}
}

El resultado sería:

Hora: 12
Minuto: 23
Segundo: 44

Como ves, el método parse() de LocalTime convierte automáticamente la cadena de texto en una hora.

¿Cómo combinar la fecha y la hora con LocalDateTime?

Si necesitas manejar tanto la fecha como la hora en un solo objeto, puedes usar la clase LocalDateTime. Supón que tienes la cadena «2020-06-01T11:20:15», que representa una fecha y hora combinadas. Puedes convertirla de la siguiente manera:

import java.time.LocalDateTime;

public class ConvertirStringAFechaHora {
public static void main(String[] args) {
LocalDateTime fechaHora = LocalDateTime.parse("2020-06-01T11:20:15");
System.out.println("Fecha y hora: " + fechaHora);
System.out.println("Año: " + fechaHora.getYear());
System.out.println("Mes: " + fechaHora.getMonthValue());
System.out.println("Día: " + fechaHora.getDayOfMonth());
System.out.println("Hora: " + fechaHora.getHour());
System.out.println("Minuto: " + fechaHora.getMinute());
System.out.println("Segundo: " + fechaHora.getSecond());
}
}

El resultado sería este:

Fecha y hora: 2020-06-01T11:20:15
Año: 2020
Mes: 6
Día: 1
Hora: 11
Minuto: 20
Segundo: 15

Este ejemplo combina las clases de fecha y hora en un solo objeto, esto es bastante común en aplicaciones que requieren manejar ambos valores simultáneamente.

Personaliza el formato de la fecha: aprende a usar DateTimeFormatter

Existirán ocasiones en las que el formato de la fecha en la cadena no va a coincidir con el formato esperado por las clases en Java. Para casos especiales como este podemos hacer uso de la clase DateTimeFormatter, así podremos especificar un formato personalizado. Veamos cómo hacerlo:

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

public class ConvertirStringAFormatoPersonalizado {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime fechaHora = LocalDateTime.parse("2020-06-01 11:20", formatter);

System.out.println("Fecha personalizada: " + fechaHora);
}
}

El resultado:

Fecha personalizada: 2020-06-01T11:20

Con esto, puedes definir el formato de la fecha en función de las necesidades de tu aplicación.

Te interesó esta temática y quieres seguir aprendiendo? No dudes en seguirnos por medio del bootcamp java, con el cual potenciarás tus habilidades en este lenguaje de programación tan popular. No esperes más para convertir tu futuro en algo brillante. ¡Únete ahora!

Ramón Maldonado

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

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado