En Java, para convertir una cadena de texto (String) a una fecha (Date), se utilizan principalmente las clases del paquete java.time
(disponible desde Java 8). Este paquete ofrece varias clases útiles, como LocalDate
, LocalDateTime
y DateTimeFormatter
, que permiten manejar y formatear fechas de manera sencilla y robusta.
LocalDate
y DateTimeFormatter
La clase LocalDate
es la más utilizada para trabajar con fechas sin hora, y LocalDateTime
incluye tanto la fecha como la hora. Para realizar la conversión de texto a fecha, se utiliza la clase DateTimeFormatter
para definir el formato del texto.
LocalDate
Si el texto tiene solo una fecha (sin horas), como "2024-10-20"
, puedes usar LocalDate
:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// Texto a convertir
String fechaTexto = "2024-10-20";
// Definir el formato de la fecha
DateTimeFormatter formato = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// Convertir el texto a LocalDate
LocalDate fecha = LocalDate.parse(fechaTexto, formato);
System.out.println("Fecha convertida: " + fecha);
}
}
LocalDateTime
Si el texto también incluye la hora, como "2024-10-20 14:30"
, puedes usar LocalDateTime
:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// Texto a convertir
String fechaTexto = "2024-10-20 14:30";
// Definir el formato de la fecha y hora
DateTimeFormatter formato = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
// Convertir el texto a LocalDateTime
LocalDateTime fechaHora = LocalDateTime.parse(fechaTexto, formato);
System.out.println("Fecha y hora convertida: " + fechaHora);
}
}
Si el formato del texto es diferente, por ejemplo, "20/10/2024"
, puedes modificar el patrón en el DateTimeFormatter
para adaptarlo:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// Texto a convertir con formato "dd/MM/yyyy"
String fechaTexto = "20/10/2024";
// Definir el formato adecuado
DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy");
// Convertir el texto a LocalDate
LocalDate fecha = LocalDate.parse(fechaTexto, formato);
System.out.println("Fecha convertida: " + fecha);
}
}
Date
(Clase Legacy)
Antes de Java 8, se utilizaba la clase java.util.Date
, pero esta es menos flexible y más propensa a errores. Sin embargo, si necesitas trabajar con esta clase, puedes usar SimpleDateFormat
para convertir texto a Date
:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// Texto a convertir
String fechaTexto = "20/10/2024";
// Definir el formato adecuado
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
try {
// Convertir el texto a Date
Date fecha = formato.parse(fechaTexto);
System.out.println("Fecha convertida: " + fecha);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
1. Convertir un texto con formato yyyy-MM-dd
a LocalDate
:
LocalDate fecha = LocalDate.parse("2024-10-20", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
2. Convertir un texto con formato yyyy-MM-dd HH:mm
a LocalDateTime
:
LocalDateTime fechaHora = LocalDateTime.parse("2024-10-20 14:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
3. Convertir un texto con formato dd/MM/yyyy
a LocalDate
:
LocalDate fecha = LocalDate.parse("20/10/2024", DateTimeFormatter.ofPattern("dd/MM/yyyy"));
Para más detalles sobre cómo trabajar con fechas y tiempos, puedes consultar la documentación oficial de Java.
Jorge García
Fullstack developer