jsp页面获取服务器时间

来源:互联网 发布:sql语句编写技巧 编辑:程序博客网 时间:2024/06/05 01:13

今天在处理页面日历控件的时候发现了一个小小的问题,在jsp页面中我们可以用new Date()的形式获取当前的日期,但是用这种形式获取的日期取的是页面所运行的机器的系统时间(简单来说,网页在a电脑上运行,new Date()的日期与a电脑的系统时间匹配,网页在b电脑上运行,new Date()获取的时间与b电脑的系统时间是匹配的),这样的方式获取时间的话会出现一定的问题:假如,用户的电脑时间与服务器的时间相差很多的话,具体来说就是比服务器时间慢比较多的话,会导致用户新创建出来的一些东西在创建之初就已经过了有效期,然而用new Date()进行校验的时候确实通过的。这就需要我们在页面进行时间校验的时候以服务器的时间为准,防止出现这种比较奇葩的情况。(虽然大部分的电脑的时间都是与网络同步,但是不能保证所有的)

所以就想要用另一种方式去获取时间,于是就有了下面的这种用java脚本获取时间的代码

var now = new Date(<%=new java.util.Date().getTime()%>);

在页面尝试过之后,这种方式确实可以获取到服务器的时间,但是在调试的过程当中再次发现问题,因为这个使用java脚本语言获取的数据,那么这个数据获取的时间就是加载这个jsp页面的时间,而且这个时间在一次获取之后就不会发生变化,这就问js的判断增加了不准确的可能性,想要让时间更加精确,于是又想了一个办法,在这个变量在jsp加载之后,让一个方法去重复的更新这个变量

function run() {          now.setSeconds(now.getSeconds() + 1);   }     setInterval("run();", 1000); 

run()是让时间增加一秒的方法,下面的一句则是让run方法重复执行,执行的间隔是1000毫秒也就是1秒,这样就能够保证这个变量随时保持与服务器一致。


最后,值得注意的一点是,setInterval()方法是会有延时误差的,短时间的误差并不大,在可以接受的范围之内,如果页面停留的时间过长的话,就建议用其他的方法了


原创粉丝点击