倒计时的算法:
倒计时的算法是:某个时间 - 现在时间 = 剩余时间,也就是倒计时。这里使用时间戳,时间戳简单来说是现在(某个时间)距离1970/1/1d=的总毫秒。所以某个时间总毫秒数 - 现在时间的总毫秒数 = 剩余毫秒数,再转换成天、时、分、秒。
转换的公式为:
d = parseInt(总秒数/60/60/24); //天数
h = parseInt(总秒数/60/60%24); //小时
m = parseInt(总秒数/60%60); //分数
s = parseInt(总秒数%60); //秒数
案例:
wxml
<view>
<button type='primary' style='margin-bottom:40px; width: 500rpx;' bindtap='startSetInter'>开始</button>
<button type='primary' style='margin-bottom:40px; width: 500rpx;' bindtap=''>剩余 {{h}}:{{m}}:{{s}}</button>
<button type='primary' style=" width: 500rpx;" bindtap='endSetInter'>结束</button>
</view>
js
Page({
data: {
//存储计时器
setInter: '',
inputTime: 0,
h: 0,
m: 0,
s: 0,
expiration_time: '2022-12-3 12:00:00', //输入到期的时间
},
onLoad: function () {
var that = this;
var inputTime = +new Date(that.data.expiration_time);
that.setData({
inputTime: inputTime
})
},
startSetInter: function () {
var that = this;
//将计时器赋值给setInter
that.data.setInter = setInterval(
function () {
var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
var times = (that.data.inputTime - nowTime) / 1000 ; // times是剩余时间总的秒数
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
that.setData({
h: h
})
var m = parseInt(times / 60 % 60); // 分
m = m < 10 ? '0' + m : m;
that.setData({
m: m
})
var s = parseInt(times % 60); // 当前的秒
s = s < 10 ? '0' + s : s;
that.setData({
s: s
})
if (h <= 0 && m <= 0 && s <= 0) {
that.endSetInter() //时间到后停止
} else {
}
}, 1000);
},
time() {},
endSetInter: function () {
var that = this;
//清除计时器 即清除setInter
clearInterval(that.data.setInter)
},
onHide: function () {
},
onUnload: function () {
var that = this;
//清除计时器 即清除setInter
clearInterval(that.data.setInter)
},
})