2013-01-17 99 views
1

我工作在.Net环境和我的aspx页面我想添加一个运行数字时钟w //秒,但我需要它来使用服务器端时间。最好的方法是什么?客户端时钟使用服务器端系统时间

谢谢!

+1

您能否假设服务器上的时间与客户端上的时间保持同步? (即,它们不以相对速度运动) – SLaks

+0

您赢得它的准确度如何?为了真实准确,您需要实现一些协议,该协议不仅可以计算时间的获得,还可以计算得出该时间的延迟。 – Aristos

回答

1

您是否考虑过AJAX UpdatePanel?

MSDN:Tutorial: How to refresh an UpdatePanel control at a timed interval

这可能是矫枉过正,以每秒更新一次。也许实现它,以便它轮询服务器来检查服务器和客户端时间仍然同步,如果没有,更新客户端页面?

+4

也许UpdatePanel看起来像一个简单的解决方案,但请不要!做一些Ajax调用和一个小的JavaScript,然后你去。 – Aristos

5

moment来看看这个JavaScript库。

你只需要提供你的服务器端的时间,以你的JavaScript代码,可能通过类似一个数据属性

即:

<html data-server-time="@Model.ServerTime"> 

,然后你的JS应该简单地(假设jQuery和片刻):

var date = $('html').data('server-time'); 
var start = new Date(); 

var updateTime = function(){ 
    setTimeout(function(){ 
     var now = moment(date).add(new Date() - start).format('YYYY/MM/DD HH:mm:ss') 
     $('.target').text(now); 
     updateTime(); 
    },1000); 
} 

$(function(){ 
    updateTime(); 
}); 

Fiddle

这样你就可以使用服务器时间,但不需要每页加载一次以上,避免不必要的AJAX调用。除非你的服务器有核级时钟或类似的东西。

+0

这假定服务器上的时间以相同的速率传递。 :) – SLaks

+2

好吧,除非他需要疯狂的准确性,或者服务器在超空间中进行时间旅行,否则应该这样做。 – bevacqua

相关问题