サーバー時間とブラウザ時間の時間差をどのように測定できますか? ブラウザとサーバーの両方でミリ秒単位の時間を取っている場合、サーバーとブラウザが2つの異なるタイムゾーンにある場合、正確な結果が得られますか?
3610 次
2 に答える
3
組み込みの方法はありません。これは、アプリケーション レベルで行う必要があります。JavaScript を使用して時刻を取得し、この結果をサーバーに送信して、時刻を明確に知ることができます。これらの結果を比較します。
結果は、ネットワーク遅延まで正確です。
タイムゾーンの違いを知りたいだけなら、それで十分です。ただし、ネットワーク遅延を知りたい場合は、推定できます。クライアントからサーバーにクライアント時間を送信し、サーバーからクライアントにサーバー時間を送信し、タイムゾーンのオフセットを考慮してください。残りは、クライアント -> サーバー -> クライアントのレイテンシーです。これを 2 で割ります。これが一方向レイテンシの最初の見積もりです。より良い推定には、より多くの統計が必要です。
于 2012-05-08T14:58:25.227 に答える
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);
于 2012-05-08T15:42:07.707 に答える