我想在java中找到时间差异,这样我就可以在会话到期时创建新会话,否则就会占用新的时间。
答案 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";