Formateo de fechas¶
Introducción¶
La API de Java nos proporciona clase clase para formatear las fechas y las horas, DateTimeFormatter
, al igual que su antecesora está compuesta de patrones de cadena que representas diferentes símbolos relacionados con las fechas:
- y, nos permite acceder al año en formato de cuatro o dos dígitos (2014 o 14).
- D, nos permite obtener el número de día del año (225).
- d, al contrario del anterior nos devuelve el número del día del mes en cuestión (27).
- L, nos ayuda a obtener el mes del año en forma numérica, M nos da el mes en texto.
- H, nos da la hora.
- s, nos da los segundos.
- m, nos permite obtener los minutos.
- a, nos da el am o pm de la hora.
- z, nos permite acceder al nombre de la zona horaria.
Info
Para ver más patrones puede visitar la API: https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/time/format/DateTimeFormatter.html
Para construir una instancia de esta clase, existe un método estático ofPattern(str)
que recibe una cadena con los patronos indicados. Existe una versión sobrecargada que además recibe un Locale
para devolver la fecha formateado al idioma deseado.
Si el método recibe un patrón erróneo lanzará la excepción IllegalArgumentException
Parsear una fecha a cadena¶
Las clases LocalDate, LocalTime, LocalDateTime, YearMonth, MonthDay, y el resto de clases referidas a las fechas tienen un método format()
que recibe un objeto de la clase DateTimeFormatter
para formatear la fecha con dicho formato. Además la clase DateTimeFormatter
tiene el mismo método, pero recibe un objeto fecha.
Veamos un ejemplo:
public class DateToString {
public void show(){
LocalDateTime date = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/M/yy");
System.out.println(date.format(formatter));
}
public static void main(String[] args) {
new DateToString().show();
}
}
Parsear una cadena a una fecha¶
Las clases de manejo de fecha, tienen un método estático llamado parse
, que recibe la fecha en formato cadena, y un formato (en caso de no recibirlo, tiene una versión sobrecargada donde obtiene el formato estándar) devolviendo así un objeto de tipo fecha. En caso de que la cadena no cumpla con el patrón se lanzará una excepción DateTimeParseException