4

我需要虚拟时间(4 x 当前日期和时间)。我已经设法用当前日期和时间显示运行时钟,但我无法比当前时间快四倍。

例如,如果当前日期为 01-01-2012 00:00:00,则虚拟时间应为 01-01-2012 00:00:04

不仅秒数应该成倍增加;当秒数超过 59 个虚拟秒时,相应的分钟、小时、日期、月份和年份也应该相乘。也就是说,时钟应该以我的日期格式每秒以四秒的增量运行。

请看我的页面: http: //www.chemfluence.org.in/sample.html

它现在以当前时间运行。我想快四倍地运行它。

请在下面查看我的代码。

<!DOCTYPE html>
<html>
    <head>
        <script>
            function startTime()
            {
                var today = new Date();
                var h = today.getHours();
                var m = today.getMinutes();
                var s = today.getSeconds();
                // Add a zero in front of numbers<10
                m = checkTime(m);
                s = checkTime(s);
                document.getElementById('txt').innerHTML =
                    today.getDate() +
                    "-" +
                    (today.getMonth()+1)+"-" +
                    today.getFullYear() +
                    " "+h+":"+m+":"+s;
                t = setTimeout(function(){startTime()},500);
            }

            function checkTime(i)
            {
                if (i<10)
                {
                    i = "0" + i;
                }
                return i;
            }
        </script>
    </head>

    <body onload="startTime()">
        <div id="txt"></div>
    </body>
</html>
4

3 回答 3

4

在知道两个时间戳和因子的情况下,有一个简单的公式可以确定每个给定时间的虚拟时间:

var virtualOrigin = Date.parse("2012-01-01T00:00:04"),
    realOrigin = Date.parse("2012-01-01T00:00:00"),
    factor = 4;

function getVirtual(time) {
    return new Date( virtualOrigin + (time - realOrigin) * factor );
}

// usage:
var now = new Date(),
    toDisplay = getVirtual(now);

jsfiddle.net 上的演示

于 2013-01-11T05:34:33.640 回答
1
  1. 确定当前时间(“START”)(作为时间戳——自 1970 年以来的秒数)

  2. 显示时钟时,改为显示 (("CURRENT" - "START") * 4) + "START"

于 2013-01-11T05:20:45.867 回答
0

您可以执行setInterval1 秒,然后将 4 秒添加到当前日期。

(此示例仅将时间记录到控制台,但您可以轻松地将其连接到 HTML 元素。)

var date = new Date();

setInterval(function(){
  date = new Date(date.getTime() + 4000);
  console.log(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
}, 1000);
于 2013-01-11T05:29:37.783 回答