0

UTC 時刻を常に更新してユーザーに表示する必要がある UI があります。

私の元のコードはこれでした:

(function () {
    $http.get('api/getdate').success(function (data) {
        current = new Date(data.res + new Date().getTimezoneOffset()*60*1000);
        updateDateTimer = setInterval(function(){
            $http.get('api/getdate').success(function (data) {
                current = new Date(data.res + new Date().getTimezoneOffset()*60*1000);
            });
        }, 30000);
    });
})();

data.res には、必要な正しいタイムスタンプがあります。UIに送り返されるデータでサーバーを信頼できるため、この方法は正常に機能します。ユーザーから必要な唯一のデータはUTCからのオフセットであるため、表示される日付は正しいと確信しています。

私の問題は、サーバーへの呼び出しが 30 秒ごとに行われることです。クロックをさらに頻繁に変更したい場合、これは非常に厄介なことになります。

サーバーへの呼び出しを 1 回だけ行い、作成された Date オブジェクトにタイマーを使用して 1 秒を追加することを考えましたが、これは正確ではなく、数分後には時計が実際の時計と同期していないことがわかります。時間。

初めてサーバーに電話をかけない可能性はありますか? 問題は、クライアントがローカル クロックを変更しないことを確認できないことです。最初の .get 呼び出しで作成されている Date オブジェクトを処理する方法が必要なようですが、どうすればよいですか?

ありがとう

4

1 に答える 1

0

質問を少し明確にしていただけますか?現在のUTC 時刻を検索/表示するだけの場合、new Date().getTime() は 1970 年 1 月 1 日 UTC からのミリ秒を返すため、時刻は既に UTC になっています (getTime() の 2 回の呼び出し)。ニューヨークとロサンゼルスで同時に発生すると、同じ数が表示されます)。次に、getUTCHours()、getUTCMinutes、getUTCSeconds() など、UTC 時間を提供する Date オブジェクトにいくつかの UTC 関数があります。

于 2013-10-08T17:54:51.410 に答える