zoukankan      html  css  js  c++  java
  • 3.node简单的定时任务时间处理

    需求描述:需要一个脚本执行数据库操作。具体的操作按照实际要求来。现在要求这个脚本能能够在指定的时间周期的时间点执行这段脚本。现将相关示例代码分享出来。

    function run() {
        var begin_hour = '11:05:00';/**开始时间点*/
        var cycle_time =24 * 60 * 60 * 1000;/**默认周期1天*/
        var curr_date = new Date().format('yyyy-MM-dd');/* 当前日期 */
        var curr_time = new Date().getTime();/* 当前时间时间戳 */
    
        var curr_run_time = new Date(curr_date + ' ' + begin_hour).getTime();/* 当前日期拼接开始执行时间 */
    
        var diff_time = curr_run_time - curr_time;/* 当前日期执行时间点与当前时间的时间差 */
        var ms = cycle_time;/* 距离下次执行时间的时间差 */
    
        if (diff_time >= 0) {/* 时间差大于0,证明执行时间是在当前时间之后 */
            ms = diff_time;
        } else {
            ms = cycle_time - Math.abs(diff_time);
        }
    
        /* 第一次执行使用算出的时间差,后面的执行采用固定天数的毫秒数执行 */
        var timer = setInterval(function () {
            doWork();/*具体的数据库操作*/
            clearInterval(timer);
    
            timer = setInterval(function () {
                doWork();
            }, parseInt(cycle_time));
        }, ms);
    }

    需要注意的是,使用setInterval()或者setTimeout( )做定时器的时候,当设定的时间在24天左右的时候这个方法就会无视时间间隔,直接doWork()方法。所以,当定时的时间间隔过长的时候,这个方法并不适用。

  • 相关阅读:
    蹉跎之印
    [转]cypress EZ-USB 68013在WIN7 64位下驱动识别方法 && 64位WIN7中禁用驱动程序签名强制
    cnki搜索候选
    [转]和机器学习和计算机视觉相关的数学
    [链接]SPSS 19 最新版破解版及教程下载
    fvtool函数
    [转]html中submit和button的区别(总结)
    [转]SAR与SIGMA DELTA的区别
    LINKAXES matlab plot
    Labview 自动清空前面板显示控件
  • 原文地址:https://www.cnblogs.com/Nick-Hu/p/9473333.html
Copyright © 2011-2022 走看看