从8月1号开始到12月31号结束,求当前时间到每个周二早上9点钟的一个倒计时
<!docType html> <html> <head> <meta charset="utf-8"> <title>ceshi</title> <script src="js/jquery-1.11.3.min.js"></script> </head> <body> <div class="content"></div> <script> $(function(){ $.ajax({ url:'/topic/product.htm', data:{}, type:'post', dataType:'json', success:function(data){ var nowTime = Date.parse(new Date());//获取服务器时间 var time = new Date(nowTime); var week = time.getDay(); //获取星期几 var year = time.getFullYear(); //获取年份 var day = time.getDate(); //获取几号 var month = time.getMonth()+1; //获取月份 var fullday=0;//定义一个月多少天 //判断是否是闰年 if(!(year%4)){//可以整除,是闰年 //判断月份是30天还是31天 if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){ fullday = 31; }else if(month==2){ fullday = 29; }else{ fullday = 30; } }else{//不可以整除,不是闰年 //判断月份是30天还是31天 if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){ fullday = 31; }else if(month==2){ fullday = 28; }else{ fullday = 30; } } //根据今天周几来判断距离下一次周二还有几天 var distance_day = 0; switch(week){ case 1: distance_day = 1; break; case 2: distance_day = 7; break; case 3: distance_day = 6; break; case 4: distance_day = 5; break; case 5: distance_day = 4; break; case 6: distance_day = 3; break; case 0: distance_day = 2; break; } //计算下一个周二的年月日 var end_time = ''; if(day+distance_day>fullday){ var next_distance = Math.abs(fullday-(day+distance_day)); //计算超过本月下周二是下个月的几号 end_time = year+'/'+(month+1)+'/'+next_distance+' 09:00:00'; }else{ end_time = year+'/'+month+'/'+(day+distance_day)+' 09:00:00'; } //倒计时 var endtime_sjc = Date.parse(end_time); //计算时间戳 var time_distance = (endtime_sjc - nowTime)/1000; //计算现在到结束时间的时间戳 function countTime(time_distance){ time_distance--; if(time_distance>0){ var getDay = Math.floor(time_distance/(60*60*24));//天 var getHour = Math.floor((time_distance - getDay*60*60*24)/(60*60));//小时 var getMinute = Math.floor((time_distance - getDay*60*60*24 - getHour*60*60)/60);//分钟 var getSecond = Math.floor(time_distance - getDay*60*60*24 - getHour*60*60 - getMinute*60);//秒 $('.content').html(getDay+'天'+getHour+'时'+getMinute+'分'+getSecond+'秒'); }else{ $('.content').html('0天0时0分0秒'); } setTimeout(function(){ countTime(time_distance); },1000); } countTime(time_distance); }, error:function(){} }); }); </script> </body> </html>
其实你这个问题主要就是目标时间与当前时间差的问题。目标时间你是可以计算出来的,规定一个初始时间,7天为一个循环;而当前时间你可以直接从服务器获取。下面简单写了一段,你可以试试:
//目标时间规定 var newTimer = new Date("2016/08/02 09:00:00"); newTimer = newTimer.getTime(); function time() { //当前时间获取(可以从服务器获取) var nowTimer = new Date(); nowTimer = nowTimer.getTime(); //如果当前时间大于目标时间,则加上一周;直到目标时间大于当前时间 while (newTimer<=nowTimer){ newTimer = newTimer + 7 * 24 * 60 * 60 * 1000; } //以下为时间计算显示 var spanTimer = newTimer - nowTimer; if (spanTimer > 0) { var day = Math.floor(spanTimer / 86400000); spanTimer -= day * 86400000; var hour = Math.floor(spanTimer / 3600000); spanTimer -= hour * 3600000; var minute = Math.floor(spanTimer / 60000); spanTimer -= minute * 60000; var second = Math.floor(spanTimer / 1000); console.log(day + '天' + hour + '时' + minute + '分' + second + '秒') } } //定时器循环 timer = window.setInterval(function () { time(); }, 1000);
至于你要的到12月31日停止这个问题,做个判断把定时器干掉就ok了!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
其实你这个问题主要就是目标时间与当前时间差的问题。
目标时间你是可以计算出来的,规定一个初始时间,7天为一个循环;而当前时间你可以直接从服务器获取。
下面简单写了一段,你可以试试:
至于你要的到12月31日停止这个问题,做个判断把定时器干掉就ok了!