2012-05-08 10 views
0

サーバー時間とブラウザ時間の時間差をどのように測定できますか? ブラウザとサーバーの両方でミリ秒単位で時間を費やしていると、サーバーとブラウザが2つの異なるタイムゾーンにある場合に正確な結果が得られますか?サーバーとブラウザの時差

+0

このように見えるのは、ユーザーが時計をどの時刻に設定したかによって異なります。私は技術的に好きな時はいつでも時計を設定できます。 – BeRecursive

+0

あなたは[NTP](http://en.wikipedia.org/wiki/Network_Time_Protocol)の使用について考えなければならないようです。 –

+0

ブラウザの時間とサーバーの時間をどのように把握していますか。私たちにいくつかのコードを教えてください?なぜあなたはそれをやりますか?あなたが達成しようとしていることは何ですか? –

答えて

2

組み込みの方法はありません。アプリケーションレベルでこれを行う必要があります。 JavaScriptを使用して時間を取得し、この結果をサーバーに送信して、何時になったのかが分かります。これらの結果を比較してみましょう。

結果はネットワークレイテンシまで正確になります。

タイムゾーンの違いを知りたい場合は十分です。ただし、ネットワークの待ち時間を知りたい場合は、クライアントからサーバーへのクライアント時間の送信、サーバーからクライアントへのサーバー時間の送信、タイムゾーンのオフセットを考慮してください。残りの部分はクライアント - >サーバ - >クライアントの待ち時間です。これを2で割る - これは一方向遅延の最初の推定です。より良い見積りには、より多くの統計が必要です。

+0

私はネットワークの待ち時間をあまり心配していません。うん、あなたは時間のfrmのJSを取得し、それをサーバーに送信することが私がやりたいと思っていたものです。その比較でブラウザとサーバーのタイムゾーンが異なる場合は正確でしょうか?時間差はミリ秒で表示されますが、タイムゾーンオフセットを含めた差異も私に与えられますか? – neo

0

クライアントのタイムゾーンGMTオフセットをJavascript Date.getTimezoneOffset()で取得し、この値を非表示フィールドに保存できます。ここではサンプルスクリプトを使用して、クライアントのタイムゾーンを決定することができます:

var now = new Date(); 
var currentTimeZoneOffset = now.getTimezoneOffset(); 
var jan = new Date(now.getFullYear(), 0, 1, 2, 0, 0), jul = new Date(now.getFullYear(), 6, 1, 2, 0, 0); 
var hemisphere = (jan.getTime() % 24 * 60 * 60 * 1000) > (jul.getTime() % 24 * 60 * 60 * 1000); 
var dstOffset = hemisphere ? jan.getTimezoneOffset() : jul.getTimezoneOffset(); 
var standardOffset = hemisphere ? jul.getTimezoneOffset() : jan.getTimezoneOffset(); 
var gmtHours = -currentTimeZoneOffset/60; 
document.write("GMT time-zone offset: " + gmtHours +"<br>"); 
var isDstActive = (currentTimeZoneOffset-dstOffset) != 0; 
document.write("Daylight saving time is active: " + isDstActive + "<br>"); 
var isTimezoneWithDst = (dstOffset-standardOffset) != 0; 
document.write("DST is observed in this timezone: " + isTimezoneWithDst);