如何在每天早上7:50运行倒计时器10分钟,直到每天早上8点。之后,班次将关闭。计时器将是完成工作的警告。
我现在使用了不同风格的setinterval和settimeout代码片段几个小时。但我不知道如何继续。我的主要问题是使用setinterval或setimeout。
1)setinterval:每隔几分钟检查时间是7:50还可以吗?
2)settimeout:可以计算一天中的秒数。然后在那些秒后继续调用函数?
这对我有用
window.setInterval(function() {
var date = new Date();
if (date.getHours() === 8 && date.getMinutes() === 0) {}
}, 60000);
var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now;
if (millisTill10 < 0) {
millisTill10 += 86400000;
}
setTimeout(function() {
alert("It's 10am!")
}, millisTill10);
答案 0 :(得分:1)
setInterval
用于在给定时间内重复回调函数,setTimeout
用于在特定时间后运行回调。由于您需要创建计数器,因此可以在此处使用setInterval
。
注意:如果要在10分钟内每秒显示一次用户,可以使用1000作为间隔时间值。但是如果你想在10分钟的持续时间内显示每分钟,那么使用60 * 1000作为间隔时间值会更好。
setInterval(function(){
var dateNow = new Date();
if(dateNow.getHours() >= 7 &&
dateNow.getMinutes >= 50 &&
dateNow.getHours < 8)
{
// if the alert box isn't displayed yet
// display it first.
// update the display.
}else{
// if the alert box is displayed
// hide it
}
}, 1000); // or 1000 * 60 for minute based display
答案 1 :(得分:1)
每分钟运行一次计时器。如果当前时间属于您的分配范围,请显示警告。这段代码的问题在于它只能精确到一分钟 - 而不是秒。
每秒运行一次并不是一个好习惯。
setInterval(function(){
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
//Rough estimation for the time between 7.50 and 8.00 here
if (h === 7 && m >= 50)
console.log('Warning!');
}, 1000)
现在我们可以做更多......
我们可以通过以上例程来启动超时功能,该功能在间隔中将是精确的。它将在正确的时间触发倒数计时器并再设置24小时的闹钟。
var starter = setInterval(function(){
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
//Rough estimation for the time between 7.50 and 8.00 here
if (h === 7 && m >= 50)
setTimeout(timer24(), 1000 * 60 * 24)
}, 1000)
function timer24(){
//Warn every 10 seconds
var countdown = setInterval(function(){
console.log('Warning!');
var d = new Date();
var h = d.getHours();
if (h == 8)
clearInterval(countdown)
}, 10)
setTimeout(timer, 1000 * 60 * 24)
}