场景:如活动列表进行倒计时(多个时间同时倒计时)。
实现:
1. 在展示列表的数据集合中加入天、时、分、秒等倒计时属性。
list.forEach(item =>{
item.lastDay = 0; //天
item.lastHour = 0; //时
item.lastMinute = 0; //分
item.lastSecond = 0; //秒
})
2. 封装方法,读取集合数据进行运算赋值。
function getLastTime(){
for(var i = 0; i < list.length; i++){
var orderTime = new Date().getTime();//当前时间
var finshTime = new Date(list[i].ordTime);
finshTime.setDate(finshTime.getDate() + 1);
var endTime = finshTime.getTime();//获取下单时间后的同一天的同一时间
var distanceTime = endTime - orderTime; //间隔时间
if(distanceTime > 0){
var dd = Math.floor(distanceTime / 1000 / 60 / 60 / 24);
var hh = Math.floor((distanceTime / 1000 / 60 / 60) % 24);
var mm = Math.floor((distanceTime / 1000 / 60) % 60);
var ss = Math.floor((distanceTime / 1000) % 60);
dd = dd > 9 ? dd : '0' + dd;
hh = hh > 9 ? hh : '0' + hh;
mm = mm > 9 ? mm : '0' + mm;
ss = ss > 9 ? ss : '0' + ss;
list[i].lastDay = dd;//天
list[i].lastHour = hh;//时
list[i].lastMinute = mm;//分
list[i].lastSecond = ss;//秒
}else{
list[i].lastDay = 0;//天
list[i].lastHour = 0;//时
list[i].lastMinute = 0;//分
list[i].lastSecond = 0;//秒
}
}
}
3. 调用方法(可在获取数据源的地方调用)
setInterval(function(){
_this.getLastTime();
},1000)