System.currentTimeMillis()是否有日期的详细信息?

时间:2012-02-02 07:51:56

标签: java session servlets

我正在使用以下代码计算特定用户的非活动间隔:

inActiveInterval = System.currentTimeMillis() - objHttpSession.getLastAccessTime();

如果会话有昨天的时间,这会给上次访问时间带来正确的差异吗?

2 个答案:

答案 0 :(得分:3)

是的,这是正确的。根据{{​​3}}的API:

  

返回自格林威治标准时间1970年1月1日午夜以来的最后一次[...]毫秒数

HttpSession.getLastAccessedTime()一致:

  

<强>返回:   当前时间与1970年1月1日午夜时间之间的差异,以毫秒为单位。

您也可以使用:

new Date().getTime()

因为System.currentTimeMillis()具有相同的含义:

  

返回:自1970年1月1日00:00:00 GMT以来,该日期所代表的毫秒数。

答案 1 :(得分:1)

通常是的,时间单位的粒度通常取决于操作系统,如 System.currentTimeMillis() javadoc所述:

  

...值的粒度取决于底层操作系统,可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

但这不应该造成问题,因为大多数操作系统的分辨率应该足够好。