1. 程式人生 > >活動開始和截止時間倒計時

活動開始和截止時間倒計時

一個活動,擁有開始時間結束時間,分別需要去執行相關的任務,公司的一些專案中用的還挺多,隨手記錄一下吧,便於以後用到。

程式碼如下:

(function($){
    $.actCountTimer=function(options){
        //各種屬性、引數
        var defaults = {
            DurationTime:['20170109085500','20170119085500'], //活動開啟和截止時間
            open:function(){}, //活動開始執行
            close:function(){} //活動結束執行
        };
        var _opt = $.extend(defaults,options);
        var startTimer=_opt.DurationTime[0],endTimer=_opt.DurationTime[1];
        var start_time=new Date(parseInt(startTimer.substr(0,4)),parseInt(startTimer.substr(4,2)),parseInt(startTimer.substr(6,2)),parseInt(startTimer.substr(8,2)),parseInt(startTimer.substr(10,2)),parseInt(startTimer.substr(12,2))),end_time=new Date(parseInt(endTimer.substr(0,4)),parseInt(endTimer.substr(4,2)),parseInt(endTimer.substr(6,2)),parseInt(endTimer.substr(8,2)),parseInt(endTimer.substr(10,2)),parseInt(endTimer.substr(12,2)));
        var start_timeMonth=start_time.getMonth()-1,end_timeMonth=end_time.getMonth()-1;
        start_time.setMonth(start_timeMonth);
        end_time.setMonth(end_timeMonth);
        _mainFun();
        function _mainFun(flag){
            var curr_time=new Date();
            if(flag){
                if(end_time>curr_time){
                    setTimeout(function(){
                        _mainFun(1);
                    },1000);
                }else{
                    _opt.close.call(this);
                }
            }else{
                if(start_time>curr_time){
                    setTimeout(function(){
                        _mainFun();
                    },1000);
                }else{
                    if(end_time>curr_time){
                        _opt.open.call(this);
                        setTimeout(function(){
                            _mainFun(1);
                        },1000);
                    }else{
                        _opt.close.call(this);
                    }
                }
            }
        }
    }
})(jQuery);

用法如下:
$.actCountTimer({
            DurationTime:['20170109105150','20180109105200'], //活動開啟和截止時間
            open:function(){ //活動開始執行
                console.log('open');
            },
            close:function(){ //活動結束執行
                console.log('close');
            }
        });