miércoles, 23 de octubre de 2019

Trabajando con JavaTime - LocalDate

La clase "LocalDate" que fue añadida en la versión 1.7 del JDK es de alguna manera la nueva forma como podemos manipular fechas en JAVA en lugar de emplear la clase "Date" de "java.util"

Veamos los siguientes ejemplos:

package test;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Fechas {
    
    public static void main(String[] args) {       
        //Capturando la fecha actual
        LocalDate fechaHoy = LocalDate.now();
        System.out.println("Fecha actual: " + fechaHoy.toString());
        
        //Ingresando la fecha como año, mes y día en formatos numéricos
        LocalDate fechaDeInt = LocalDate.of(2019,12,31);        
        System.out.println("Fecha desde ints: " + fechaDeInt.toString());
        
        //Ingresando fecha desde un String, usar formato: año, mes y día
        LocalDate fechaDeString = LocalDate.parse("1992-06-30");
        System.out.println("Fecha con formato por defecto: " + fechaDeString.toString());
        
        //Ingresando fecha desde un String que tiene formato: día, mes y año
        DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd-MM-yyyy");
        LocalDate fechaConFormato = LocalDate.parse("31-12-2000", formato);
        System.out.println("Fecha con formato por defecto: " + fechaConFormato.toString());
        //Si queremos retornar en un String con el mismo formato obtenido
        String fechaCorta = fechaConFormato.format(formato);
        System.out.println("Fecha con formato corto: " + fechaCorta);        
        //Extrayendo los datos individualmente en dos casos
        System.out.println("Fecha con formato corto: "
                + fechaConFormato.getDayOfMonth() + " / "
                + fechaConFormato.getMonthValue() + " / "
                + fechaConFormato.getYear());
        System.out.println("Fecha con formato largo : "
                + fechaConFormato.getDayOfWeek() + " / "
                + fechaConFormato.getMonth() + " / "
                + fechaConFormato.getYear());
    }
    
}

Nos producirá una salida similar a esta:
Fecha actual: 2019-10-23
Fecha desde ints: 2019-12-31
Fecha con formato por defecto: 1992-06-30
Fecha con formato por defecto: 2000-12-31
Fecha con formato corto: 31-12-2000
Fecha con formato corto: 31 / 12 / 2000
Fecha con formato largo : SUNDAY / DECEMBER / 2000


  • Por defecto se usa el formato dd-MM-yyyy
  • Si se desea cambiar ese formato para ingresar el String, se emplea un "DateTimeFormatter" donde se indica la forma como llegará el String al LocalDate. 

Observa la siguiente tabla comparativa de los diversos formatos en fechas:


Formato Salida
yyyy-MM-dd 2019-12-31
dd-MM-YYYY 31-12-2019
dd-MMM-yyyy 31-dic-2019
dd-MM-yy 31-12-19
dd-MMM-uuuu 31-12-2019

También se puede emplear "u" en lugar de "y", para los días se emplea "d" y los meses "M". No usar "m" pues estos se emplean para minutos.

No hay comentarios:

Publicar un comentario