如何在特定的时间和日期运行函数
How to run a function at specific time & date?
如何在给定的时间和日期运行函数?
示例:我有一个函数,需要在每月 12 日上午 10 点运行。
如果这很重要,此页面将 24/7 全天候运行。
显然,我必须与当前日期进行比较,但我不确定如何检查当前日期和时间是否匹配。
香 农
不建议使用 setInterval
,因为它具有非确定性行为 - 事件可能会被错过或一次触发。 时间也会不同步。
下面的代码改为使用一分钟周期的setTimeout
,其中每分钟计时器都会重新同步,以便尽可能接近 hh:mm:00.000s 点。
function surprise(cb) {
(function loop() {
var now = new Date();
if (now.getDate() === 12 && now.getHours() === 12 && now.getMinutes() === 0) {
cb();
}
now = new Date(); // allow for time passing
var delay = 60000 - (now % 60000); // exact ms to next minute interval
setTimeout(loop, delay);
})();
}
在 o 想要执行检查的页面上添加此
setInterval(function () {
var date = new Date();
if (date.getDate() === 12 && date.getHours() === 10 && date.getMinutes === 0) {
alert("Surprise!!")
}
}, 1000)
小提琴
更新 - 添加date.getSeconds == 0
以限制其在 10:00:00 仅触发一个。感谢下面的评论
您可以实例化两个 Date 对象。一个用于现在,一个用于事件的下一个实例。现在很简单:new Date()。对于下一个实例,您可以遍历选项,直到找到比现在更大的选项。或者做一些更复杂的日期时间魔法。比较两者的 getTime(),然后为警报执行设置超时。
编辑:自 @Alnitak 指出超时有最大值以来进行了更新,请参阅 setTimeout 如果延迟超过 2147483648 毫秒,则会立即触发。
function scheduleMessage() {
var today=new Date()
//compute the date you wish to show the message
var christmas=new Date(today.getFullYear(), 11, 25)
if (today.getMonth()==11 && today.getDate()>25)
christmas.setFullYear(christmas.getFullYear()+1)
var timeout = christmas.getTime()-today.getTime();
if( timeout > 2147483647 ){
window.setTimeout( scheduleMessage(), 2147483647 )
} else {
window.setTimeout(function() {alert('Ho Ho Ho!'); scheduleMessage()}, timeout)
}
}
你可以使用这样的东西
var runned = false;
var d = new Date();
if(d.getDate() == 12 && d.getHours() == 10 && !runned){
//Do some magic
runned = true;
}
如果你想要一些分钟(而不是整个小时,你可以添加d.getMinutes()
可能使用元刷新和锻炼内容服务器端进行iframe
<meta http-equiv="refresh" content="{CHANGE_THIS_TO_WHAT_YOU_CALCULATED_AT_SERVER}">
或使用javascripts setInterval
var interval = 300000; // run in 5 minutes
window.setInterval("reloadRefresh();", interval);
function reloadRefresh() {
// do whatever
}
和
相关文章:
- 如何停止代码在特定日期运行
- MVC4和日期选择器:“;0x800a01b6-JavaScript运行时错误:对象没有't支持属性或方法
- 如何更新日期?当我运行应用程序时,它被卡住了
- 当在运行nodejs的服务器上调用new Date()时,Date将返回服务器启动时的日期
- 具有默认运行日期值的动态生成的日期选取器
- 根据日期/时间有条件地运行代码
- 日期选择器 UI 在更改月份年份之前运行在显示日之前
- 如何在特定的时间和日期运行函数
- jQuery:运行多个日期选择器's动态创建的输入
- 在运行时检查是否有正确的日期类型,以便进行比较
- WCF服务无法从运行在ie中的javascript解析日期时间
- 如果满足日期标准,如何运行javascript代码
- 试图触发脚本在特定日期和时间运行
- 只在同一日期运行逻辑
- 如何在Javascript中跟踪应用程序的最后运行日期
- 日期函数未在Firefox中运行
- 日期选择器UI停止,函数不会第二次运行
- 如何在运行过程中更改Bootstrap日期时间选择器语言
- Javascript运行日期时间返回值在chrome中工作,但在Internet explorer中不工作
- JavaScript代码使时钟(日期和时间)运行速度提高四倍