java中两个日期之间的时间差异

时间:2011-05-06 12:26:15

标签: java

我必须找到java中两个不同日期对象之间的时间差异,如果超过5秒,我必须使会话无效。

以下是该方案:

我有一个jsp页面,每5秒设置一次会话

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

我有另一个jsp页面,每1秒访问一次,

Date date2 = new Date();

现在我必须在我提到的另一个jsp中进行比较并使会话无效,

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

Differnce = date2 - date1;

因此,如果差异超过5秒,则会话无效。

4 个答案:

答案 0 :(得分:67)

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

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

答案 1 :(得分:8)

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

可以轻松回答这个问题

答案 2 :(得分:8)

在其他答案的基础上,java.util.concurrent.TimeUnit可以很容易地在毫秒,秒等之间进行转换......

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

答案 3 :(得分:1)

从Java-8开始,您可以使用-

ChronoUnit.DAYS.between(startDate.toInstant(), endDate.toInstant());

这是一个通用的枚举,使用它可以很容易地找到任何单位中的差异。