固定时钟的时间

时间:2016-09-16 20:44:35

标签: javascript

我正在尝试制作一个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 个答案:

答案 0 :(得分:0)

如果您希望每个观看者只有一次,并且您不关心那个时间,那么您应该使用UTC时间。将getHours和getMinutes调用更改为getUTCHours和getUTCMinutes。 (某些时区偏离了我们的15,30或45分钟。)

从技术上讲,你也应该将getSeconds改为getUTCSeconds,但我不知道时区在几秒钟内有所不同。

如果您不想将UTC时间用作单次,则应使用UTC时间的偏移量或基于服务器时间的时间。