日期:2014-05-16  浏览次数:20517 次

倒计时校对的问题
我在asp.net后台写了一个获取当前时间的代码,想在前台用js写一个倒计时的代码,并且实时和后台获取的时间计算校对,问题来了,后天获取的是服务器的时间,js得到的是客户端的时间,可这两个系统的时间不一样啊?该如何解决?有没有啥函数可以在后台得到客户端的时间?
------解决方案--------------------
一般是用服务器的时间附给js对象来当作初使化
------解决方案--------------------
如果要严格显示服务器时间就通过AJAX不断轮循,从服务器返回时间,虽然网络延时,但通常不会超过1s
------解决方案--------------------
你可以在后台用SQL语句 'select getdate()' 拿到当前系统时间,然后传到前台js里面用这个时间实现你自己想要的方法。
------解决方案--------------------
引用:
可这两个系统的时间不一样啊?该如何解决?有没有啥函数可以在后台得到客户端的时间?

互联网时间校对有它的规范,你不能胡乱写一个。例如可以参考NTP的算法等等。

简单来说,假设你的Ajax发送校时消息的时间是t1,接收到响应的时间是t2,而服务器端返回的时间是t3,那么你的客户端跟服务器端的时间差就是  ((t3-t1)+(t3-t2))/2。

同时由于每一次访问,TCP所走的路径都是不一样的,因此应该连续计算5遍,取其平均值,才是最终的结论。