js整时整分整秒定时更新

  • 不讲闲话,直接放代码

// 待办任务(测试)
function task(){
    console.log(new Date())
}

/**
 * 定时更新,以整点/整时/整分为基准按固定间隔循环执行
 * @param {function} task   需要要执行的方法
 * @param {string} type     类型:时、分、秒
 * @param {number} interval 间隔:时(1-24)、分(1-60)、秒(1-60)
 */
function update(task, type, interval) {
    let target
    let now = new Date()
    switch (type) {
        case '时':
            target = (interval - now.getHours() % interval) * 60 * 60 * 1000 - now.getTime() % (60 * 60 * 1000)
            break
        case '分':
            target = (interval - now.getMinutes() % interval) * 60 * 1000 - now.getTime() % (60 * 1000)
            break
        case '秒': default:
            target = (interval - now.getSeconds() % interval) * 1000 - now.getTime() % 1000
            break;
    }
    setTimeout(() => {
        this.update(task, type, interval)
        task.call()
    }, target)
}

  • 每15秒执行一次效果截图,interval参数设为1即整秒、整分、整时

js整时整分整秒定时更新