找时差

时间:2011-03-31 09:30:37

标签: java time

我想在java中找到时间差异,这样我就可以在会话到期时创建新会话,否则就会占用新的时间。

3 个答案:

答案 0 :(得分:3)

您可以使用System.currentTimeMillis();以Java格式获取当前系统时间(自格林威治标准时间01-01-1970 00:00:00以来的毫秒数)。

会话对象很可能还有一种方法来获取上次使用会话的时间(在您正在使用的任何会话对象的API文档中查找)。

从会话中减去当时的当前时间,您知道自上次使用会话以来已经过了多长时间。如果它超过了超时时间,那就做你需要做的一切。

请注意,servlet容器具有用于使会话无效的内置机制,您无需手动使会话无效。此外,如果没有会话,HttpRequest.getSession()会自动为您创建一个新的HttpSession对象。

答案 1 :(得分:3)

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";

答案 2 :(得分:2)

使用Date意味着创建一个不需要的对象,因为它只是包装System.currentTimeMillis()不幸的是,这个函数最多只精确到毫秒,在某些Windows系统上只有16毫秒。

更好的方法是使用System.nanoTime()在Oracle的JVM上,在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";