如何在一天中的指定时间运行JavaScript函数?

时间:2013-06-14 11:23:56

标签: javascript jquery

我需要每16分钟运行一次功能,但不是在用户转到页面时,而是在特定时间运行。

例如:12:01,12:16,12:31,12:46,13:01,13:16,13:31等等......

我该怎么做?

updateTodayCharts = setInterval(function () {
    ajax_update( date1 , date2 );
}, 15 * 60 * 1000);

此脚本每15分钟运行一次ajax_update。当您在12:20访问该页面时,它将在12:35(12:20 + 15分钟)运行。

我需要在12:36运行此脚本(所以11分钟后不是15)

首先,我将计算从现在到下次更新的时间,然后设置时间间隔时间。

2 个答案:

答案 0 :(得分:4)

有两种方法可以做到这一点,一种是存储上次日期,间隔时间较短并检查足够的时间,另一种方法是将 setTimeout setInterval ,或类似的这种结构。

var interval = (new Date().getUTCMinutes() + 59) % 15; // current position
interval = 15 - interval;   // remaining til next position
interval = interval * 60e3; // to ms

interval = window.setTimeout(function () {
    interval = window.setInterval(function () {
        ajax_update( date1 , date2 );
    }, 15 * 60e3);
}, interval);

答案 1 :(得分:0)

检查每分钟是否分钟数为1,16,31,46或任何你想要的但在这种情况下,模数15分钟必须等于1:

updateTodayCharts = setInterval(function () {
    var d = new Date(),
        min = d.getMinutes();
    if (min % 15 === 1) ajax_update( date1 , date2 );
}, 60 * 1000);