2013-01-17 148 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

相關問題