一个活动,拥有开始时间结束时间,分别需要去执行相关的任务,公司的一些项目中用的还挺多,随手记录一下吧,便于以后用到。
代码如下:
(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'); } });