jsp页面获取服务器时间

踩坑记录 专栏收录该内容
24 篇文章 0 订阅

今天在处理页面日历控件的时候发现了一个小小的问题,在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()方法是会有延时误差的,短时间的误差并不大,在可以接受的范围之内,如果页面停留的时间过长的话,就建议用其他的方法了


  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

也许我太傻

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值