Backbone.View.extend({
el: 'body',
events:{ },
initialize:function(){
this.CountDown.bind(this,this.$el.find('.js-count-down'))();
},
CountDown: function($el){
var view = this,
$this = $el,
Start = $this.data('start')*1000,
End = $this.data('end')*1000,
_interval = null
Now = new Date();if(Start - Now > 0){ $this.text('本活动还未开始!'); return }
if(End - Now < 0){
$this.text('本活动已结束!');
window.clearInterval(interval);
return
}setInterval(function(){
var leftTime = ( End - (new Date())); //计算剩余的毫秒数
if(!leftTime){
clearInterval(interval);
}
var days = parseInt(leftTime / 1000 / 60 / 60 / 24 , 10); //计算剩余的天数
var hours = parseInt(leftTime / 1000 / 60 / 60 % 24 , 10); //计算剩余的小时
var minutes = parseInt(leftTime / 1000 / 60 % 60, 10);//计算剩余的分钟
var seconds = parseInt(leftTime / 1000 % 60, 10);//计算剩余的秒数
days = view.formattingTime(days);
hours = view.formattingTime(hours);
minutes = view.formattingTime(minutes);
seconds = view.formattingTime(seconds);
$this.find('.day').text(days);
$this.find('.hour').text(hours);
$this.find('.minute').text(minutes);
$this.find('.second').text(seconds);
},1000);},
formattingTime:function (i){
if(i<10) { i = "0" + i; }
return i
}
});
逻辑分析:
1、获取活动开始时间、结束时间、和现在时间的时间戳进行比较:
1)、现在时间小于开始时间则活动还没有开始;
2)、现在时间大于结束时间则活动已结束;
3)、当现在时间在开始时间与结束时间之间则执行倒计时程序;
2、倒计时程序逻辑:
利用 setInterval 函数美妙执行一次,每次执行获取当前时间进行剩余时间计算。
将剩余时间转换成天、时、分、秒:
秒:首先将剩余毫秒时间转成秒(/1000)并处以60求余,得到的结果就是剩余的秒数;
分:将剩余的时间转换成分(/1000/60)并处以60求余,得到的结果就是剩余的分钟数;
时:将剩余的时间转换成时(/1000/60/60)并处以24求余,得到的结果就是剩余的小时数;
天:将剩余的时间转换成时(/1000/60/60)并处以24求商,得到的结果就是剩余的天数;