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.

La clase Cuadrado

Se presenta la implementación de una clase denominada Cuadrado . Esta clase representa a la figura geométrica Cuadrado en donde tiene como único atributo el lado. El atributo lado de la clase es una característica de cualquier objeto de tipo Cuadrado. Los objetos del tipo Cuadrado que se instancien o se creen tendrán un determinado valor en su atributo lado. Con el valor del atributo lado se podrá calcular tres tipos de mediciones como el área, el perímetro y la diagonal. Para cada cálculo se crea un método en la clase Cuadrado.