0% encontró este documento útil (1 voto)
382 vistas

Manejo de Fechas en Java Con LocalDate y ChronoUnit

1) La clase LocalDate de Java permite trabajar de forma directa con fechas sin tener en cuenta hora o zona horaria. 2) Se pueden crear objetos LocalDate usando now(), of(), o parse() y realizar operaciones como sumar/restar días/meses. 3) Existen métodos para comparar fechas, obtener información como día de la semana, y medir diferencias usando ChronoUnit.

Cargado por

Enzo Sandoval
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
382 vistas

Manejo de Fechas en Java Con LocalDate y ChronoUnit

1) La clase LocalDate de Java permite trabajar de forma directa con fechas sin tener en cuenta hora o zona horaria. 2) Se pueden crear objetos LocalDate usando now(), of(), o parse() y realizar operaciones como sumar/restar días/meses. 3) Existen métodos para comparar fechas, obtener información como día de la semana, y medir diferencias usando ChronoUnit.

Cargado por

Enzo Sandoval
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

{Fechas;}

Manejo de Fechas en Java

Preparado por: Enzo Sandoval


Departamento de Ingeniería Informática
Universidad Nacional de Jujuy - UNJu

Introducción

Trabajar con fechas en Java no es algo del otro mundo ni tiene demasiadas complicaciones, pero la cantidad de formas
que hay para hacerlo puede confundirnos, o peor aún, puede que sólo conozcamos la más mala para hacerlo.

En este manual trabajaremos con la clase LocalDate, esta clase permite trabajar de forma mucho más directa que otras
clases como ser Date y Calendar.

Para poder trabajar con la clase LocalDate debemos importar el paquete java.time.LocalDate;

LocalDate es una clase inmutable de fecha-tiempo que representa una fecha y es visto como año, mes, dia (yyyy/M/dd).
Representa una fecha sin tener en cuenta el tiempo o zona horaria. Haciendo uso del método now(); se puede crear
un LocalDate con la fecha actual del sistema.

//Nombre de nuestro paquete


package test;
//Este paquete contiene LocalDate
import java.time.LocalDate;

//Clase Principal que contiene el método main


public class Principal {
//Declaración del método main
public static void main(String[] args) {
LocalDate hoy = LocalDate.now();//Creación de un LocalDate
System.out.println("Fecha: " + hoy);//Muestra nuestro LocalDate por pantalla
}
}

Salida:
run:
Fecha: 2019-04-23
BUILD SUCCESSFUL (total time: 1 second)

Hay otras formas de crear/instanciar nuestro LocalDate.


Haciendo uso del método of(int year, int month, int dayOfMonth); se puede crear un LocalDate.

LocalDate hoy = LocalDate.of(1989, 1, 16);


System.out.println("Fecha: " + hoy);//1989-01-16
System.out.println(hoy.getYear());//1989
System.out.println(hoy.getMonth());//JANUARY
System.out.println(hoy.getDayOfMonth());//16

1
{Fechas;}

LocalDate fecha = LocalDate.parse("1989-01-16");


System.out.println(fecha);//1989-01-16
System.out.println(fecha.getYear());//1989
System.out.println(fecha.getMonth());//JANUARY
System.out.println(fecha.getDayOfMonth());//16

Las dos formas de crear objetos de tipo LocalDate representan la fecha del 16-01-1989.

Operaciones que se pueden realizar con LocalDate

Manipulación de fechas (Sumar o restar días, meses, años, etc ):

LocalDate hoy = LocalDate.parse("1989-01-16");


LocalDate mañana = hoy.plusDays(1);//Con plusDays(int) se suma días a una fecha
System.out.println(hoy);
System.out.println(mañana);

Salida:
1989-01-16
1989-01-17

Como vemos a la fecha inicial se le sumó 1 día y el mes se actualizó de forma automática, esto nos permite evitar
considerar el número de días en un mes, el horario de verano, etc.

De igual forma podemos hacerlo con los meses y LocalDate resolverá si es necesario cambiar de año.

LocalDate ahora = LocalDate.parse("1989-01-16");


LocalDate despues = ahora.plusMonths(3);//Con plusMonths(int) se suma meses a una fecha
System.out.println(ahora);
System.out.println(despues);

Salida:
1989-01-16
1989-04-16

Para poder restar días, meses, años se usan los métodos minusDays(int); minusMonths(int); minusYears(int);

Recordemos que cuando hacemos operaciones sobre las fechas debemos asignar la respuesta a una nueva
referencia ya que el objeto original no se modificará puesto que los objetos LocalDate son immutables.

2
{Fechas;}

Comparación entre fechas

Así como podemos realizar operaciones entre las fechas podemos hacer comparaciones entre ellas, veamos algunos
ejemplos:

El método isBefore(); valida si una fecha es antes que otra:

System.out.println(LocalDate.parse("1989-01-16").isBefore(LocalDate.parse("1989-01-17")));

Salida:
true

El método isAfter(); valida si una fecha es después que otra:

System.out.println(LocalDate.parse("1989-01-16").isAfter(LocalDate.parse("1989-01-17")));

Salida:
false

El método isEqual(); valida si una fecha es igual a otra

System.out.println(LocalDate.parse("1989-01-16").isEqual(LocalDate.parse("1989-01-16")));

Salida:
true

El método isLeapYear(); valida si un año es bisiesto:

System.out.println(LocalDate.parse("1989-01-16").isLeapYear());

Salida:
false

Podemos realizar validaciones muy simples sin necesidad de escribir código complejo.

Obtener información sobre alguna fecha

Si lo único que necesitamos de una fecha es el día de la semana podemos fácilmente extraerlo.
System.out.println(LocalDate.parse("1989-01-16").getDayOfWeek());

Salida:
MONDAY

Otros métodos

System.out.println(LocalDate.parse("1989-01-16").getMonth());//JANUARY
System.out.println(LocalDate.parse("1989-01-16").getYear());//1989
System.out.println(LocalDate.parse("1989-01-16").getDayOfMonth());//16
System.out.println(LocalDate.parse("1989-02-16").getDayOfYear());//47
System.out.println(LocalDate.parse("1989-01-16").getDayOfMonthValue());//1

3
{Fechas;}
Con todo lo visto hasta ahora podemos resolver el siguiente ejercicio:

A partir de 3 objetos de tipo fecha nombrados “desde”, “hoy” y “hasta”, muestre por pantalla si la fecha actual (hoy)
corresponde al rango de valores de fechas entre 1989-01-16 (desde) y 2099-09-09 (hasta).

public static void main(String[] args) {


LocalDate hoy = LocalDate.now();
LocalDate desde = LocalDate.of(1989, 1, 16);
LocalDate hasta = LocalDate.of(2099, 9, 9);
//Solo tomará la fecha si se encuentra entre el 17/1/1989 al 8/9/2099
if (hoy.isAfter(desde) && hoy.isBefore(hasta)) {
System.out.println("Fecha: " + hoy + ", se encuentra en el intervalo");
} else {
System.out.println("Fecha: " + hoy + ", no corresponde al intervalo");
}
}

Otra clase importante para el manejo de fechas es la clase ChronoUnit que maneja la diferencia en días, meses, años
entre dos fechas.

Para poder trabajar con esta clase es necesario importar el paquete java.time.temporal.ChronoUnit;

Un ejemplo básico de la implementación de la clase LocalDate y ChronoUnit:

public static void main(String[] args) {


LocalDate hoy = LocalDate.now();//Hoy es 24/4/2019
LocalDate despues = LocalDate.of(2019, 4, 26);
//Con ChronoUnit.DAYS obtenemos los días transcurridos desde el 24/6 hasta el 26/4
//Debería mostrar por pantalla "Pasaron: 2 dias"
System.out.println("Pasaron: " + ChronoUnit.DAYS.between(hoy, despues)+ " días");
}

Salida:
run:
Pasaron: 2 días
BUILD SUCCESSFUL (total time: 1 second)

Esta clase tiene varios métodos pero los más interesantes son:

ChronoUnit.DAYS.between(fecha1,fecha2);//Devuelve cantidad de días(long) entre dos fechas


ChronoUnit.MONTHS.between(fecha1,fecha2);//Devuelve cantidad de meses(long) entre dos fechas
ChronoUnit.YEARS.between(fecha1,fecha2);//Devuelve cantidad de años(long) entre dos fechas

También podría gustarte