2016-09-16 95 views
0

我試圖做一個JavaScript時鐘(已完成),它顯示一個特定的時間,並在同一時間,每個人都查看它。目前,它會顯示16:...對於我,以及21:....對於其他人。這顯然是由於時區。但是,我希望它爲每個觀看者顯示一次。我已經有了一個用完整的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

使用['getUTCHours']](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours)而不只是'getHours' – Hamms

回答

0

如果您希望每個查看器都有一個單獨的時間,並且您不在乎現在是什麼時間,則應該使用UTC時間。將getHours和getMinutes調用更改爲getUTCHours和getUTCinutes。 (有些時區與我們的時間偏離15,30或45分鐘)。

從技術上講,你也應該改變getSeconds getUTCSeconds,但我不知道在幾秒鐘內不同的時區。

如果您不希望將UTC時間用作單次時間,則應該使用UTC時間的偏移量或將時間基於服務器時間。