2016-09-16 66 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时间的偏移量或将时间基于服务器时间。