Cuanta falta hacía un Java time package en Java8. Hemos vivido muchos años utilizando las clases de Date, Calendar y SimpleDateFormat. Era más que evidente que se necesitaba una solución mas potente tipo JodaTime dentro del propio API de Java. Con la llegada de Java 8 es una de las cosas que se ha conseguido. Vamos a ver una introducción a este API tan interesante.
Java Time Package
Existen tres clases que podríamos decir son las más importantes de este nuevo package: Instant , LocalDate y LocalTime. Ahora bien ¿Para qué sirve cada una de ellas? .
Instant: Esta clase define un instante concreto en una linea de tiempo y sirve habitualmente para calcular los tiempos que han sucedido entre dos instantes concretos.
Veamos un ejemplo en código:
package com.arquitecturajava.time;
import java.time.Duration;
import java.time.Instant;
public class Principal000Instante {
public static void main(String[] args) {
Instant instante= Instant.now();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Instant instante2= Instant.now();
System.out.println(Duration.between(instante, instante2).toMillis());
System.out.println(Duration.between(instante, instante2).toMinutes());
}
}
El resultado es:
LocalDate: Este clase se encarga de instanciar una fecha concreta en el calendario con día , mes y año para que podamos trabajar con ella.
Veamos un ejemplo en código:
package com.arquitecturajava.time;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.Month;
import java.time.Period;
public class Principal001Instante {
public static void main(String[] args) {
LocalDate dia= LocalDate.of(2016, 8, 31);
LocalDate dia2= LocalDate.of(2016, Month.SEPTEMBER, 30);
Period periodo=Period.between(dia, dia2);
System.out.println(periodo.getDays());
}
}
LocalDateTime: Este clase se encarga de instanciar una fecha concreta en el calendario. En ese aspecto es similar a LocalDate pero en este caso incluye también la hora y los minutos.
Vamos a verlo en código:
package com.arquitecturajava.time;
import java.time.LocalDateTime;
public class Principal002LocalDateTime {
public static void main(String[] args) {
LocalDateTime fechaConHoraMinutos = LocalDateTime.of(2016, 8, 31, 8, 2);
LocalDateTime nuevaFecha=fechaConHoraMinutos.plusMinutes(25);
System.out.println(nuevaFecha.getMinute());
}
}
Hemos creado una fecha y la hemos añadido 25 minutos si consultamos la nueva y la imprimimos por pantalla obtendremos 27 minutos. Estas son las clases principales de Java Time package .
Otros artículos relacionados: Java Lambdas , Java Streams , Java references methods