我正在尝试制作一个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
答案 0 :(得分:0)
如果您希望每个观看者只有一次,并且您不关心那个时间,那么您应该使用UTC时间。将getHours和getMinutes调用更改为getUTCHours和getUTCMinutes。 (某些时区偏离了我们的15,30或45分钟。)
从技术上讲,你也应该将getSeconds改为getUTCSeconds,但我不知道时区在几秒钟内有所不同。
如果您不想将UTC时间用作单次,则应使用UTC时间的偏移量或基于服务器时间的时间。