您的位置:首页 > Web前端 > JavaScript

jsp页面获取服务器时间

2017-08-11 17:16 211 查看
今天在处理页面日历控件的时候发现了一个小小的问题,在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()方法是会有延时误差的,短时间的误差并不大,在可以接受的范
4000
围之内,如果页面停留的时间过长的话,就建议用其他的方法了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: