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