サーバー時間とブラウザ時間の時間差をどのように測定できますか? ブラウザとサーバーの両方でミリ秒単位で時間を費やしていると、サーバーとブラウザが2つの異なるタイムゾーンにある場合に正確な結果が得られますか?サーバーとブラウザの時差
答えて
組み込みの方法はありません。アプリケーションレベルでこれを行う必要があります。 JavaScriptを使用して時間を取得し、この結果をサーバーに送信して、何時になったのかが分かります。これらの結果を比較してみましょう。
結果はネットワークレイテンシまで正確になります。
タイムゾーンの違いを知りたい場合は十分です。ただし、ネットワークの待ち時間を知りたい場合は、クライアントからサーバーへのクライアント時間の送信、サーバーからクライアントへのサーバー時間の送信、タイムゾーンのオフセットを考慮してください。残りの部分はクライアント - >サーバ - >クライアントの待ち時間です。これを2で割る - これは一方向遅延の最初の推定です。より良い見積りには、より多くの統計が必要です。
私はネットワークの待ち時間をあまり心配していません。うん、あなたは時間のfrmのJSを取得し、それをサーバーに送信することが私がやりたいと思っていたものです。その比較でブラウザとサーバーのタイムゾーンが異なる場合は正確でしょうか?時間差はミリ秒で表示されますが、タイムゾーンオフセットを含めた差異も私に与えられますか? – neo
クライアントのタイムゾーン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);
このように見えるのは、ユーザーが時計をどの時刻に設定したかによって異なります。私は技術的に好きな時はいつでも時計を設定できます。 – BeRecursive
あなたは[NTP](http://en.wikipedia.org/wiki/Network_Time_Protocol)の使用について考えなければならないようです。 –
ブラウザの時間とサーバーの時間をどのように把握していますか。私たちにいくつかのコードを教えてください?なぜあなたはそれをやりますか?あなたが達成しようとしていることは何ですか? –