2011-05-06 20 views
21

Tengo que encontrar la diferencia en el tiempo entre dos objetos de fecha diferentes en Java y si ese tiempo excede 5 segundos tengo que invalidar la sesión.Diferencia en el tiempo entre dos fechas en Java

Este es el escenario:

Tengo una página JSP que estableció la sesión de cada 5 segundos

session.setAttribute("sessionAccessedAt", new Date()); 

tengo una otra página JSP que se accede a cada 1 s,

Date date2 = new Date(); 

Ahora tengo que comparar en el otro jsp que he mencionado e invalidar la sesión,

Date date1 = (Date)session.getAttribute("sessionAccessedAt"); 
Date date2 = new Date(); 

Differnce = date2 - date1; 

De esta manera, si la diferencia excede de 5 segundos, invalida la sesión.

Respuesta

59
long difference = date2.getTime() - date1.getTime(); 

    // now you have your answer in milliseconds - 
//so divide by 1000 to get the time in seconds 
+0

Funcionó .... Saludos ... :) – harishtps

7
if ((date2.getTime() - date1.getTime()) > 5000) { // getTime returns the time in milliseconds 
    // invalidate 
} 

Sin embargo, el tiempo de espera de la sesión se supone que es manejado por el contenedor, no por usted.

PD: esto es fácilmente respondida por la lectura de la javadoc: http://download.oracle.com/javase/6/docs/api/index.html

6

Sobre la base de las otras respuestas, java.util.concurrent.TimeUnit hace que sea muy fácil de convertir entre milisegundos, segundos, etc ...

long differenceInSeconds = TimeUnit.MILLISECONDS.toSeconds(date2.getTime() - date1.getTime()); 
Cuestiones relacionadas