2011-05-06 169 views
21

我必須找到java中兩個不同日期對象之間的時間差,如果時間超過5秒,我必須使會話無效。java中兩個日期之間的時間差異

這裏的情景:

我有設置會話JSP頁面每5秒

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

我有被訪問的每1秒的另一個JSP頁面,

Date date2 = new Date(); 

現在我必須在另一個jsp中進行比較,我提到並使會話無效,

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

Differnce = date2 - date1; 

因此,如果差異超過5秒,則會話失效。

回答

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

它的工作....乾杯... :) – harishtps 2011-05-06 14:30:08

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

但會話超時應該由容器來處理,而不是由你。

PS:這是很容易通過閱讀javadoc的回答:http://download.oracle.com/javase/6/docs/api/index.html

6

建立在其他的答案,java.util.concurrent.TimeUnit使得它很容易爲毫秒,秒等之間進行轉換......

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