Formateando fechas con el API Date/Time en Java

Advertisements

Java 8 introdujo el nuevo API Date&Time, con el cual se tuvo una nueva y más sencilla manera de interactuar con fechas en Java, dado que las existentes clases java.util.Date y java.util.Calendar no son tan sencillas. Cuando hablamos de fechas hay 2 operaciones que solemos hacer de forma frecuente parsear un String a un objeto Date/Time y formatear un objecto Date/Time a String. Este artículo se enfoca en estas acciones.

Date/Time a String

Si requerimos una representación String de una fecha, necesitamos usar el método format de las instancias Date/Time. Este método recibe una instancia de DateTimeFormatter, donde podemos indicar el formato o patrón de salida de dicha fecha.

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

LocalDateTime datetime = LocalDateTime.now();
String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

No importa si lo que se tiene es una instancia de LocalDateTime, LocalTime, LocalDate, or ZonedDateTime. El DateTimeFormatter y el método format funciona para todos.

String a Date/Time

Tal como se mencionó, otra tarea muy común es parser un String a una fecha, para estos casos tenemos a disposición el método estático parse en las clases Date/Time. Este require que le indiquemos el String que quermos parsear y una instancia DateTimeFormatter con el patrón de dicho String. Como resultado retornará una instancia Date/Time como salida, dicha instancia es del mismo tipo de la clase de donde usamos el método parse.

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

//Local Date Time
String datetimestring = "2021-01-18 00:00:00.0";
LocalDateTime datetime = LocalDateTime.parse(datetimestring, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));

//Local Date
String datestring = "2021-01-18";
LocalDateTime datetime = LocalDate.parse(datestring, DateTimeFormatter.ofPattern("yyyy-MM-dd"));

Advertisements

Leave a Reply

Your email address will not be published. Required fields are marked *