Java String to Date es una de las conversiones más habituales que tenemos que hacer . Para ello hay que recordar que en Java 8 llegan nuevas clases inmutables orientadas a simplificar el manejo de fechas. En concreto LocalDate , LocalTime y LocalDateTime son las principales y simplifican sobre manera el manejo de fechas comparadas con Date , DateFormat y Calendar que son clásicas de Java.
Vamos a ver unos ejemplos básicos.
Java String to Date
A partir de ahora es muy sencillo convertir una cadena a fecha ya que la propia clase LocalDate nos admite el uso de cadenas de forma directa a través del método parse siguiendo un formato muy concreto de año-mes-día.
package com.arquitecturajava;
import java.time.LocalDate;
public class Principal {
public static void main(String[] args) {
LocalDate fecha = LocalDate.parse("2020-06-10");
System.out.println(fecha.getDayOfMonth());
System.out.println(fecha.getYear());
System.out.println(fecha.getMonth());
}
} El método parse recibe el año el mes y el día separados por un guion y automaticamente convierte la fecha, podemos ver el resultado en la consola:
Java LocalTime
De igual forma podemos trabajar con LocalTime que almacena hora minutos y segunos y nos permitirá una transformación de estos datos.
package com.arquitecturajava;
import java.time.LocalTime;
public class Principal3 {
public static void main(String[] args) {
LocalTime localTime = LocalTime.parse("12:23:44");
System.out.println(localTime.getHour());
System.out.println(localTime.getMinute());
System.out.println(localTime.getSecond());
}
}
El resultado es muy similar al anterior pero orientado al uso horario:
Java 8 LocalDateTime
Java 8 también permite combinar ambos conceptos en una sola clase que aglutine el concepto de Date y de Time que como no podria ser de otra manera se denomina LocalDateTime. Así podremos realizar un cambio de Java String to Date aplicando tanto fecha como hora.
import java.time.LocalDateTime;
public class Principal2 {
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.parse("2020-06-01T11:20:15");
System.out.println(localDateTime.getHour());
System.out.println(localDateTime.getMinute());
System.out.println(localDateTime.getSecond());
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getYear());
}
} El resultado lo podemos ver por la consola:
Java String to Date CustomFormat
Acabamos de ver una introducción al formato de fechas con Java 8 . En muchas ocasiones no nos valdrá con el formato por defecto sino que necesitaremos personalizarlo a traves de un DateTimeFormatter .
Vamos a ver cómo podemos realizar esta operación.
package com.arquitecturajava;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Principal2 {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime localDateTime = LocalDateTime.parse("2020-06-01 11:20", formatter);
System.out.println(localDateTime.getHour());
System.out.println(localDateTime.getMinute());
System.out.println(localDateTime.getSecond());
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getYear());
}
}
El resultado es identico pero hemos personalizado el formateo decidiendo donde ponemos cada valor y que estructura usamos para separarlo: