時刻修正と現地時刻の取得にjsを使用する際にバグがあります。
js を使用してサーバー時刻を取得することもできます。原則として、返されるヘッダー情報にはサーバー側の時刻情報が含まれています。以下:
1. jQuery
コードに依存します:
function getServerDate(){ return new Date($.ajax({async: false}).getResponseHeader("Date")); }
上記の関数は、ajax を使用する場合は Date オブジェクトを返す必要があります。そうでない場合は、時刻と日付を返すことができません。
リクエストリンクを記入する必要はありません。
サーバー時間と現地時間の間に時差がある場合は、修正する必要があります。
2. ネイティブ
コード:
function getServerDate(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new window.XMLHttpRequest(); }else{ // ie xhr = new ActiveObject("Microsoft") } xhr.open("GET","/",false)//false不可变 xhr.send(null); var date = xhr.getResponseHeader("Date"); return new Date(date); }
は、Date オブジェクトも返します。xhr.open() は、リクエスト リンクを入力する必要はなく、送信し、getResponseHeader を実行する必要があります。順番に書かれています。
非同期リクエストを使用する必要がある場合は、onreadystatechange ステータスをリッスンしてさまざまな操作を実行できます。
コードは次のとおりです:
function getServerDate(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new window.XMLHttpRequest(); }else{ // ie xhr = new ActiveObject("Microsoft") } xhr.open("GET","/",true); xhr.send(null); xhr.onreadystatechange=function(){ var time,date; if(xhr.readyState == 2){ time = xhr.getResponseHeader("Date"); date = new Date(time); console.log(date); } } }
非同期の戻り時間を使用するのはあまり便利ではありません。
ここでのreadyStateには、さまざまな処理を容易にするための4つの状態があります:
0: リクエストは初期化されていません
1: サーバー接続が確立されました
2: リクエストが受信されました
3: リクエストが処理中です
4: リクエストは完了し、応答の準備ができています
失敗ステータス、ステータス値:
200: "OK"
404: ページが見つかりません