找时间差异

我想在java中找到时间差异,以便我可以在会话到期时创建新会话,否则将设置新时间。

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

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

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

从会话中减去当时的当前时间,您知道自上次使用会话以来已经过了多长时间。 如果它超过超时时间,请执行您必须执行的操作。

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

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