我是 JavaScript 新手,我正在尝试编写一段代码来计算从用户登录到当前时间所经过的时间。
这是我的代码:-
function markPresent() {
window.markDate = new Date();
$(document).ready(function() {
$("div.absent").toggleClass("present");
});
updateClock();
}
function updateClock() {
var markMinutes = markDate.getMinutes();
var markSeconds = markDate.getSeconds();
var currDate = new Date();
var currMinutes = currDate.getMinutes();
var currSeconds = currDate.getSeconds();
var minutes = currMinutes - markMinutes;
if(minutes < 0) { minutes += 60; }
var seconds = currSeconds - markSeconds;
if(seconds < 0) { seconds += 60; }
if(minutes < 10) { minutes = "0" + minutes; }
if(seconds < 10) { seconds = "0" + seconds; }
var hours = 0;
if(minutes == 59 && seconds == 59) { hours++; }
if(hours < 10) { hours = "0" + hours; }
var timeElapsed = hours+':'+minutes+':'+seconds;
document.getElementById("timer").innerHTML = timeElapsed;
setTimeout(function() {updateClock()}, 1000);
}
00:59:59 之前的输出都是正确的,但之后的 O/P 为:
00:59:59
01:59:59
01:59:00
01:59:01
。
。
。
。
01:59:59
01:00:00
我该如何解决这个问题,有没有更有效的方法可以做到这一点?
谢谢。
无意冒犯,但这实在是过度设计了。只需存储脚本首次运行时的开始时间,然后在每次计时器触发时从当前时间中减去该时间。
有很多关于将 ms 转换为可读时间戳的教程,因此这里不需要介绍。
var start = Date.now();
setInterval(function() {
document.getElementById('difference').innerHTML = Date.now() - start;
// the difference will be in ms
}, 1000);
<div id="difference"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)