【发布时间】:2017-08-11 17:00:32
【问题描述】:
我有一个功能可以延迟两分钟显示来自 javascript 的时间。唯一的问题是,例如,当时间为下午 2:00 时,函数显示 2:0-2pm 而不是 1:58pm。
下面是代码:
function startTime() {
var today = new Date();
var h = today.getHours();
var m = eval(today.getMinutes()-2); // needs eval function
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
var time = h>=12?" PM":" AM" // am or pm
h = h % 12;
h = h ? h : 12; // the hour '0' should be '12'
m = m < 10 ? ''+m : m;
document.getElementById('txt').innerHTML =
"Time: " + h + ":" + m + ":" + s + time;
var t = setTimeout(startTime, 500);
}
function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
<body onload="startTime()">
<div id="txt"></div>
【问题讨论】:
-
为什么不使用
moment.js? -
不,你不需要需要
eval函数。 -
您的
i = "0" + i函数没有按照您的想法执行。使用i.toString()。并使用textContent而不是innerHTML。 -
@Dai 我做了这些更改,但时间显示缺少零。如果时间是下午 5:05,您的更正会使时间显示为下午 5:3。
-
@Vinny 你从哪里得到这 2 分钟的延迟?检查您计算机的时区偏移量(您可能不小心将时区偏移量设置为 2 分钟,而不是每小时增量)。你的实际系统时钟是多少?
标签: javascript html date time