一天中某个时间的火灾事件

是否有可能使用javascript(jQuery解决方案也很好)在一天中的特定时间触发事件/调用函数,例如

在10:00致电myFunctionA

在14:00等调用myFunctionB ..

谢谢

标记

  • 获取当前时间
  • 获取下一个执行时间减去当前时间之间的时间差,以毫秒为单位
  • Settimeout与结果millisecons
/** * This Method executes a function certain time of the day * @param {type} time of execution in ms * @param {type} func function to execute * @returns {Boolean} true if the time is valid false if not */ function executeAt(time, func){ var currentTime = new Date().getTime(); if(currentTime>time){ console.error("Time is in the Past"); return false; } setTimeout(func, time-currentTime); return true; } $(document).ready(function() { executeAt(new Date().setTime(new Date().getTime()+2000), function(){alert("IT WORKS");}); }); 

4html:

 current date: 
time to Alarm:
alarm Triggered: false

JavaScript的:

 var setAlarm1 = "14"; //14:00, 2:00 PM var int1 = setInterval(function(){ var currentHour = new Date().getHours(); var currentMin = new Date().getMinutes(); $('#cd').html(currentHour + ":" + currentMin ); $('#al1').html(setAlarm1 - currentHour + " hours"); if(currentHour >= setAlarm1){ $('#al1stat').html(" true"); clearInterval(int1); //call to function to trigger : triggerFunction(); } },1000) //check time on 1s 

样本于: http : //jsfiddle.net/yhDVx/4/

我遇到了这个问题,并提出了一个更精细的解决方案。 基本思路与其他答案相同:使用setTimeout() ,从现在开始到所需时间点。

此处使用的其他详细信息:如果时间点是过去的,则安排在明天(时间点+24小时)。 使用setInterval()每天在给定时间点触发函数。 注意:此处不考虑DST。

输入参数:
time = '16:00';
triggerThis = function() { alert('this was triggered'); };

  scheduleWarning(time, triggerThis) { // get hour and minute from hour:minute param received, ex.: '16:00' const hour = Number(time.split(':')[0]); const minute = Number(time.split(':')[1]); // create a Date object at the desired timepoint const startTime = new Date(); startTime.setHours(hour, minute); const now = new Date(); // increase timepoint by 24 hours if in the past if (startTime.getTime() < now.getTime()) { startTime.setHours(startTime.getHours() + 24); } // get the interval in ms from now to the timepoint when to trigger the alarm const firstTriggerAfterMs = startTime.getTime() - now.getTime(); // trigger the function triggerThis() at the timepoint // create setInterval when the timepoint is reached to trigger it every day at this timepoint setTimeout(function(){ triggerThis(); setInterval(triggerThis, 24 * 60 * 60 * 1000); }, firstTriggerAfterMs); }