javascript - 如何获取当前日期并将其加速 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();
解决方案
这是你想要的?
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>
推荐阅读
- php - 合并,输出两个数组的项目并突出显示它们各自的项目
- linux-kernel - Linux内核内存布局
- sql - 如何在 SQL 中获取唯一数据
- oracle - 在 TIBCO bw6 中导入 Oracle HCM 数据加载器时出现命名空间错误
- python - 内部函数的返回地址与返回函数本身
- c# - 使用 CONCAT SQL 时如何为 ListBox 设置 Id 值成员
- c++ - 将数据输入从文件重定向到键盘
- python - Python - 如何编写不同数量的“if(条件)或if(条件)”?
- javascript - 它是在函数范围还是块范围内?
- haskell-stack - 堆栈构建而不将输出存储在nix存储中?