我做了这个功能,做了两件事:返回到下一个30分钟标记的时间量,并在计时器到达零时调用halfHour函数。如果时间为12:06:27
,则输出为24:33
(mm:ss)
function checkTime() {
var time = new Date();
var mins = time.getMinutes();
mins = (60-mins) % 30;
var secs = time.getSeconds();
if (secs != 60){
secs = (60-secs) % 60;
} else {
secs = 00;
}
time = [Number(mins),Number(secs)];
if (mins == 0 && secs == 0){
halfHour();
}
return time;
}
这样可行,但有一个奇怪的故障。当分钟滚动时,它显示......
24:02
24:01
的 23:00
23:59
23:58
它也会在最后一个序列中的错误halfHour();
标记处过早地拨打0:00
一分钟:1:02
1:01
0:00
0:59
我们如何纠正这个?
评论者dbrin和njzk2有解决方案。它会从59
而不是60
减去分和秒。以下是经过修改的工作代码。抱歉,它太乱了。
function checkTime() {
var time = new Date();
var mins = time.getMinutes();
mins = (59-mins) % 30;
var secs = time.getSeconds();
if (secs != 60){
secs = (59-secs) % 60;
} else {
secs = 00;
}
time = [Number(mins),Number(secs)];
if (mins == 0 && secs == 0){
halfHour();
}
return time;
}
答案 0 :(得分:2)
当JavaScript具有内置的setInterval(代码,延迟)时,为什么要重新发明轮子;实现这个目标。
setInterval(function() {
alert("I will fire after every 2 seconds")
}, 2000);
答案 1 :(得分:0)
衡量时间的方式存在缺陷。分钟数和秒数不能单独考虑,正如我在之前的评论中所示。
更简单的方法是先测量总秒数,然后对其进行格式化:
var time = new Date();
var totalS = 60 * ((60 - time.getMinutes()) % 30) - time.getSeconds()
var secs = totalS % 60
var mins = (totalS - secs) / 60