1

Google Chrome (バージョン 40.0.2214.111 m) で次のコードを実行すると、システム クロックが加速し、システム クロックは 10 秒ごとに約 1 ~ 2 秒速くなります。

Intel Atom D525 1.8GHz、2GBのRAMを搭載したWindows 7 64ビットを実行しているマシンでこれをテストしました。すべての Windows Update とドライバーがインストールされています。

setInterval(function(){
   var clientTime = new Date().getTime();
   console.log(clientTime)
},100);

IE で同じコードを実行すると、システム時刻の変更に問題はありません。

他の誰かが同じ問題を経験していますか?

http://jsfiddle.net/k4shz7cr/

アップデート

jquery と php を使用して Web サーバー (別のマシンである必要があります) から時間を取得することで、少しテストを追加しました。クライアントの時刻が Web サーバーの時刻に対して相対的に変化することがわかります。

webbserver の serverTime.php に従ってください。

<?php
    date_default_timezone_set('Europe/Stockholm');
    $date = microtime(true);
    print $date;
?>

上記の (最初の) JS は、次のように変更されました。

setInterval(function(){

   $.ajax({
       url: 'serverTime.php',
       type: 'POST',
       success: function( serverTime ){
          var clientTime = new Date().getTime() / 1000;
          var diff = serverTime - clientTime;

          console.log(serverTime,clientTime,diff)
       }
   });

},100);

! Web サーバーを client-computer と同じにすることはできません。違いは表示されません。

サーバーコードの実行時間のために、サーバー時間とクライアント時間の差は常に発生しますが、その差はある程度一定です。

2015-02-17 更新

今、ノードをインストールして同じコードを実行してテストしました:

setInterval(function(){
   var clientTime = new Date().getTime();
   console.log(clientTime)
},100);

Google Chromeを開くまで変化がありませんが、突然システム時間が変化し始めます。上記と同じ速度ではなく、1 分あたり数秒です。(クロムを開始しただけで、他には何もありません)

これは非常識です、

4

0 に答える 0