jueves, 1 de octubre de 2015

Calcular la diferencia en días entre dos fechas con Joda Time (Java)

Java
Vamos a calcular la diferencia en días entre dos fechas, utilizando la librería Joda Time. En el post Calcular la diferencia en días entre dos fechas en Java ya lo hicimos, pero esta vez utilizaremos una librería específica para trabajar con fechas y tiempo más completa que la que se incluye en Java.


Descarga de la librería


Nos dirigimos a la página oficial de Joda Time:  http://www.joda.org/joda-time/, más concretamente aquí: https://github.com/JodaOrg/joda-time/releases . Descargamos el archivo joda-time-x.x.x-dist.tar.gz (donde x.x.x es el número de versión) y lo descomprimimos. Dentro estará el archivo que nos interesa: joda-time-x.x.x.jar .
Una forma de importarla en Eclipse es la siguiente: pulsando en menú Project / Properties / Java Build Path / Libraries / Add External JARs … y seleccionamos joda-time-x.x.x.jar .


Uso de la librería


Veamos un ejemplo:
import org.joda.time.*;

public class Principal {

    public static void main(String[] args) {
        DateTime inicio = new DateTime(2015, 1, 1, 3, 0, 0, 0);
        DateTime fin = new DateTime(2015, 3, 1, 0, 0, 0, 0);

        int dias = Days.daysBetween(inicio.toLocalDate(),fin.toLocalDate()).getDays();

        System.out.println(dias);
    }
}



La salida será 59 , que corresponde a la diferencia en días entre el día 01/01/2015 y el día  01/03/2015 .
Como vemos, el código es muy sencillo: creamos un objeto DateTime para la fecha inicio y otro para la fecha final. Llamamos al método daysBetween de la clase Days , pasándole como argumentos los objetos DateTime (inicio y fin) . Cómo la salida de este método nos dará un objeto Days, lo pasamos a int mediante el método getDays de esa misma clase.
Igualmente podemos calcular los meses entre dos fechas:
int meses = Months.monthsBetween(inicio.toLocalDate(),
fin.toLocalDate()).getMonths();
System.out.println(meses);

Esta librería es muy completa en lo que a operaciones con fechas se refiere y es recomendable su uso en caso tener que hacer cálculos complejos de tiempo, usando zonas horarias, etc


Fuentes

http://www.joda.org/joda-time




Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO