首页 > 解决方案 > 如何获取当前日期并将其加速 5 倍速度以相同的速度更改时间和日期

问题描述

这是我正在使用的示例代码,它再次作为堆栈中的答案出现,但是,尽管时间在给定因子 5 下工作得更快,但它完全乘以日期。

如何从当前系统时间开始计时,以5倍的速度运行,同时增加日期和时间。

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

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

    function pad2(num) {
        return ("0"+num).substr(-2);
    }
    function format(time) {
         return time.getDate()
              + ":" + pad2(time.getMonth()+1)
         + ":" +  pad2(time.getYear())

          + "     " + pad2(time.getHours())
            + ":" + pad2(time.getMinutes())
            + ":" + pad2(time.getSeconds());
    }

    function startTime() {
        var now = new Date();
        var display = getVirtual(now);
        output.innerText = format(display);
        setTimeout(startTime, 1000/factor - (now.getMilliseconds() % (1000/factor)));
    }

    var output = document.getElementById("txt");
    startTime();

标签: javascript

解决方案


这是你想要的?

function pad2(num) {
    return ('0' + num).substr(-2);
}

function format(time) {
    return (
        time.getDate()
            + ':' + pad2(time.getMonth() + 1)
            + ':' + pad2(time.getYear())
            + '     ' + pad2(time.getHours())
            + ':' + pad2(time.getMinutes())
            + ':' + pad2(time.getSeconds())
    );
}

var originalTime = Date.now();
var original = document.getElementById("original");
setInterval(function () {
    originalTime += 1000;
    original.innerText = format(new Date(originalTime));
}, 1000);

var factor = 5;
var fastTime = Date.now();
var fast = document.getElementById("fast");
setInterval(function () {
    fastTime += 1000;
    fast.innerText = format(new Date(fastTime));
}, 1000 / factor);
<p> Original Timer </p>
<pre id="original"></pre>
<br />
<p> Fast Timer </p>
<pre id="fast"></pre>


推荐阅读