小程序秒杀倒计时
//倒计时
countDown: function (data,date) { // data为列表数据 此数据内含结束时间endTime date为服务器时间
console.log(data)
var that = this;
let newDate = (date).replace(/-/g, '/');// 获取服务器时间 转换成都支持的格式
var systimestamp = new Date(newDate).getTime();//转换成时间戳
var time = setInterval(function () { // 循环执行
systimestamp = (systimestamp/1000+1)*1000;//服务器时间戳执行+1秒
console.log('服务器时间倒计时' + systimestamp)
var spikeFruitList = addHHMMSSToListData2(data, systimestamp);
console.log('倒计时集合'+spikeFruitList)
that.setData({
spikeFruitList: spikeFruitList
})
}, 1000);
}
const addHHMMSSToListData2 = (data, systimestamp) => {
var result = data;
var goingList = new Array();
for (let i = 0; i < result.length; i++) {
var expiryTime = result[i].endTime;
console.log('结束时间+' + result[i].endTime);
var futureTime = new Date(expiryTime).getTime();
result[i] = addHHMMSSToList2(result[i], systimestamp, futureTime);
if (result[i].h_h == '00' && result[i].m_m == '00' && result[i].s_s == '00') {
//此处如果时间到了 不在加入集合中 列表也就不再显示倒计时数据
} else {
goingList.push(result[i]);
}
}
return goingList;
}
const addHHMMSSToList2 = (result, nowtimestamp, comparetimestamp) => {
var nowTime = nowtimestamp;// 当前时间的时间戳
var futureTime = comparetimestamp;// 比较时间的时间戳
// 未来的时间减去现在的时间 ;
var resTime = (futureTime - nowTime) / 1000;
// 结束时间
var zero = futureTime - nowTime;
if (zero >= 0) { // 认为还没有到达结束的时间
result.h_h = addHH(resTime);
result.m_m = addMM(resTime);
result.s_s = addSS(resTime);
} else {
result.h_h = '00';
result.m_m = '00';
result.s_s = '00';
}
return result;
}
// 时间转换
function timestampToTime(s) {
var h = Math.floor(s / 3600 % 24);
var min = Math.floor(s / 60) % 60;
var sec = s % 60;
h = add(h);
min = add(min);
sec = add(sec);
return h + ':' + min + ':' + sec
}
// 添 0
function add(m) {
return m < 10 ? '0' + m : m
}
//时
function addHH(s) {
var h = Math.floor(s / 3600 % 24);
return add(h);
}
//分
function addMM(s) {
var min = Math.floor(s / 60) % 60;
return add(min);
}
//秒
function addSS(s) {
var sec = s % 60;
return add(sec);
}
页面集合取值
{{item.h_h}}:{{item.m_m}}:{{item.s_s}}
效果图: