2016-09-16 7 views
0

私はそれを見ているすべての人に特定の時間と同じ時間を表示するjavascriptクロック(すでに完了)を作ろうとしています。現在、それは私のために16:...と、他の人には21:....と表示されます。これは明らかにタイムゾーンによるものです。しかし、私はすべての視聴者に1回表示することをお勧めします。私はすでに完全なJavaスクリプトと、私が必要とするものの例を設定したコードペンを持っています。時計の時刻を固定

http://codepen.io/Connor3xL/pen/wzWPKW

 "use strict"; 

     var textElem = document.getElementById("clocktext"); 
     var textNode = document.createTextNode(""); 
     textElem.appendChild(textNode); 
     var curFontSize = 24; // Do not change 

     function updateClock() { 
      var d = new Date(); 
      var s = ""; 
      s += (10 > d.getHours () ? "0" : "") + d.getHours () + ":"; 
      s += (10 > d.getMinutes() ? "0" : "") + d.getMinutes() + ":"; 
      s += (10 > d.getSeconds() ? "0" : "") + d.getSeconds(); 
      textNode.data = s; 
      setTimeout(updateClock, 1000 - d.getTime() % 1000 + 20); 
     } 

     function updateTextSize() { 
      var targetWidth = 0.9; // Proportion of full screen width 
      for (var i = 0; 3 > i; i++) { // Iterate for better better convergence 
       var newFontSize = textElem.parentNode.offsetWidth * targetWidth/textElem.offsetWidth * curFontSize; 
       textElem.style.fontSize = newFontSize.toFixed(3) + "pt"; 
       curFontSize = newFontSize; 
      } 
     } 

     updateClock(); 
     updateTextSize(); 
     window.addEventListener("resize", updateTextSize); 

助けることができる誰かがあります願っています。 P.S:解決策が分かりやすい場合は、私に叱責してください。p

+1

getHoursではなく、['getUTCHours'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours)を使用してください。 – Hamms

答えて

0

すべての視聴者に1回の時間をかけたい場合は、その時間を気にする必要はありません。 getHoursおよびgetMinutesの呼び出しをgetUTCHoursおよびgetUTCMinutesに変更します。 (一部のタイムゾーンは、私たちから15,30、または45分ずれています)。

技術的には、getSecondsもgetUTCSecondsに変更する必要がありますが、秒単位で異なるタイムゾーンを認識していません。

UTC時刻を一度に使用したくない場合は、UTC時刻からのオフセットを使用するか、サーバー時刻を基準にしてください。

関連する問題