Подтвердить что ты не робот

Разница во времени между двумя датами в 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 секунд, аннулирование сеанса.

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

Основываясь на других ответах, java.util.concurrent.TimeUnit упрощает преобразование между миллисекундами, секундами и т.д.

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

Ответ 4

Начиная с Java-8 вы можете use-

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

Это общий Enum, с помощью которого становится довольно просто найти разницу в любом юните.