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);
|
## 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()));
|