Найти разницу во времени - PullRequest
0 голосов
/ 31 марта 2011

Я хочу найти разницу во времени в Java, чтобы я мог создать новую сессию, если сессия истекает, иначе назначит новое время.

Ответы [ 3 ]

3 голосов
/ 31 марта 2011
Returns Time Diffrence in Seconds :




long elapsed_time = 0L;
    java.util.Date startTime = null;
    java.util.Date endTime = null;
    double fsec = 0L;
    String rSec = "";   

        startTime = new java.util.Date();

        <--------Some Operation----->

        endTime = new java.util.Date();
        elapsed_time = endTime.getTime() - startTime.getTime();
        fsec = (elapsed_time) / 1000.00;
        rSec = Double.toString(fsec);
        rSec = rSec + " Sec";
3 голосов
/ 31 марта 2011

Вы можете использовать System.currentTimeMillis(); для получения текущего системного времени в Java (в миллисекундах с 01-01-1970 00:00:00 по Гринвичу).

У объекта сеанса, скорее всего, также есть метод дляполучите время, когда сеанс использовался в последний раз (посмотрите в документации API того, какой объект сеанса вы используете).

Вычтите текущее время из этого времени из сеанса, и вы знаете, как долго онобыл с момента последнего сеанса.Если он длиннее периода ожидания, делайте все, что вам нужно.

Обратите внимание, что контейнеры сервлетов имеют встроенный механизм для аннулирования сеансов, вам не нужно аннулировать сеансы вручную.Кроме того, HttpRequest.getSession() автоматически создаст для вас новый объект HttpSession, если сеанс отсутствует.

2 голосов
/ 31 марта 2011

Использование даты означает создание ненужного объекта, поскольку он просто переносит System.currentTimeMillis() К сожалению, эта функция в лучшем случае точна только с точностью до миллисекунды, а в некоторых системах Windows - около 16 мс.

Лучше всего использовать System.nanoTime() В JVM от Oracle, в Windows XP - 7, Solaris и в последних версиях Linux это с точностью до 1 микросекунды. Он не создает никаких объектов.

long start = System.nanoTime();
// do something.
long time = System.nanoTime() - start; // time in nano-seconds.
// time in seconds to three decimal places
String timeTaken = time/1000000/1e3 + " seconds"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...