Java time package y clases fundamentales

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

}

El resultado es:

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