Ir al contenido principal

Manejo de fechas en Java 8 con LocalDate


En el programa desarrollado y mostrado en esta oportunidad, se han usado tres clases de la biblioteca de Java 8: la clase java.time.Period que sirve para determinar rangos como el total de años entre dos fechas, la clase java.time.format.DateTimeFormatter que sirve para dar diversos formatos a la fecha, y principalmente la clase java.time.LocalDate que es un objeto de fecha y hora inmutable que representa una fecha, a menudo visto como año-mes-día, además permite realizar de forma simple diversas operaciones de fecha.

A continuación, se muestra la clase GestionarFechas que demuestra parte de la funcionalidad de la clase LocalDate.

package com.sistemajava;

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

public class GestionarFechas {

    public static void main(String[] args) {
        LocalDate fechaActual, nuevaFecha, fechaModificada;
        String fechaFormateada;
        
        fechaActual = LocalDate.now();
        fechaFormateada = fechaActual.format(DateTimeFormatter.ISO_DATE);
        System.out.println("Fecha actual en formato aaaa-mm-dd:     " + fechaFormateada);
        fechaFormateada = fechaActual.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
        System.out.println("Fecha actual en formato dd/mm/aaaa:     " + fechaFormateada);
        fechaFormateada = fechaActual.format(DateTimeFormatter.ofPattern("dd-MMM-yyyy"));
        System.out.println("Fecha actual en formato dd-mes-aaaa:    " + fechaFormateada);
        fechaFormateada = fechaActual.format(DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println("Fecha actual en formato aaaammdd:       " + fechaFormateada);
        fechaFormateada = fechaActual.format(DateTimeFormatter.ISO_ORDINAL_DATE);
        System.out.println("Fecha actual en formato aaaa-dias:      " + fechaFormateada);         
        
        nuevaFecha = LocalDate.parse("1999-12-31");
        System.out.println("Nueva fecha en formato aaaa-mm-dd:      " + nuevaFecha.toString());
        fechaFormateada = nuevaFecha.getDayOfMonth() + "." 
                        + nuevaFecha.getMonthValue() + "."
                        + nuevaFecha.getYear();
        System.out.println("Nueva fecha en formato dd.mm.aaaa:      " + fechaFormateada); 
        fechaModificada = nuevaFecha.plusDays(40);
        System.out.println("Fecha modificada en 40 día mas:         " + fechaModificada.toString());
        fechaModificada = nuevaFecha.plusMonths(3);
        System.out.println("Fecha modificada en 3 meses mas:        " + fechaModificada.toString());
        fechaModificada = nuevaFecha.plusYears(5);
        System.out.println("Fecha modificada en 5 años mas:         " + fechaModificada.toString());
        fechaModificada = nuevaFecha.plusYears(-3);
        System.out.println("Fecha modificada en 3 años menos:       " + fechaModificada.toString());        

        nuevaFecha = LocalDate.of(2016, 2, 12);
        fechaModificada = LocalDate.of(2016, 2, 12);
        if(nuevaFecha.isEqual(fechaModificada))
            System.out.println("La fecha " + nuevaFecha.toString() + " es igual a " + fechaModificada.toString());       
        fechaModificada = LocalDate.of(2016, 3, 12);
        if(nuevaFecha.isBefore(fechaModificada))
            System.out.println("La fecha " + nuevaFecha.toString() + " es antes de " + fechaModificada.toString());
        fechaModificada = LocalDate.of(2016, 1, 12);
        if(nuevaFecha.isAfter(fechaModificada))
            System.out.println("La fecha " + nuevaFecha.toString() + " es despues de " + fechaModificada.toString());        
        if(nuevaFecha.isLeapYear())
            System.out.println("La fecha " + nuevaFecha.toString() + " es de año bisiesto");
        
        fechaModificada = nuevaFecha.withYear(2015);
        System.out.println("La fecha " + nuevaFecha.toString() + " se modifico el año " + fechaModificada.toString());
        fechaModificada = nuevaFecha.withMonth(5);
        System.out.println("La fecha " + nuevaFecha.toString() + " se modifico el mes " + fechaModificada.toString());
        fechaModificada = nuevaFecha.withDayOfMonth(20);
        System.out.println("La fecha " + nuevaFecha.toString() + " se modifico el día " + fechaModificada.toString());
        
        fechaModificada = LocalDate.of(2020, 2, 12);
        Period periodo = nuevaFecha.until(fechaModificada);
        System.out.println("Entre las fechas " + nuevaFecha.toString() + " y " + fechaModificada.toString() + 
                " existe " + periodo.getYears() + " años");
    }
    
}

El resultado de ejecutar el programa se muestra en la siguiente figura:



Comentarios

Publicar un comentario

Gracias por tus comentarios

Entradas populares de este blog

Calendario en Java con GregorianCalendar

En el programa desarrollado y mostrado en esta oportunidad, se han usado tres clases de la biblioteca de Java: la clase  java.util.Date  que sirve para crear una fecha actual del sistema, la clase  java.text.DateFormat  que sirve para dar formato a la fecha, y principalmente la clase  java.util. GregorianCalendar   que sirve para manipular fechas.

Formato de fechas en Java con SimpleDateFormat

En el programa desarrollado y mostrado en esta oportunidad, se han usado dos clases de la biblioteca de Java: la clase  java.util.Date  que sirve para crear una fecha actual del sistema, y la clase  java.text.SimpleDateFormat  que sirve para dar diversos formatos de impresión a la fecha.