En este artículo voy a poner ejemplos de algunas tareas que posiblemente vamos a utilizar al trabajar con el Java Time API, en este caso estos los he ido tomando del proyecto que estoy trabajando actualmente y los quise documentar. Conforme vaya utilizando otros interesantes los iré agregando acá.

AVISO

Este artículo supone que el lector ya sabe ¿para qué es? y ¿cómo funciona? el Java Time API, no se entrará en detalle sino que directamente se mostrarán los ejemplos de cálculos.

Cálculos

Obtener primer y último día del mes

Obtener el primer y último día del mes ahora es una tarea trivial utilizando la clase TemporalAdjusters, esta tiene una serie de funciones tipo utilitario.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// Crea localDate de prueba
LocalDate localDate = LocalDate.of(2019, 1, 15); // 15 de Enero, 2019
System.out.println("localDate = " + localDate);

// Obtiene el primer día del mes
LocalDate fechaInicio = localDate.with(TemporalAdjusters.firstDayOfMonth());
System.out.println("fechaInicio = " + fechaInicio);

// Obtiene el último día del mes
LocalDate fechaFin = localDate.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("fechaFin = " + fechaFin);

Cantidad de noches entre dos fechas

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
LocalDate fechaInicio = LocalDate.of(2019, 1, 10); // 10 de Enero, 2019
LocalDate fechaFin = LocalDate.of(2019, 1, 15); // 15 de Enero, 2019

// Obtiene la cantidad de noches entre la fecha inicio y la fecha fin usando ChronoUnit
long cantidadNoches = ChronoUnit.DAYS.between(fechaInicio, fechaFin);
System.out.println("cantidadNoches = " + cantidadNoches);

// Obtiene la cantidad de noches entre la fecha inicio y la fecha fin usando Period
Period period = Period.between(fechaInicio, fechaFin);
int cantidadNochesPeriod = period.getDays();
System.out.println("cantidadNochesPeriod = " + cantidadNochesPeriod);

Formato

## de mes

En este caso necesitaba mostrar algo como “20 de agosto”, la solución fue hacerlo de la siguiente manera:

1
2
3
DateTimeFormatter formatter = DateTimeFormatter
        .ofPattern("dd 'de' MMMM", new Locale("es", "CR"));
System.out.println("Fecha = " + formatter.format(LocalDate.now()));