实现情景是:在获取到订单详情后,页面上有一个订单支付倒计时显示 xx:xx:xx;需求是在订单创建后10分钟后如果没有支付就自动取消并显示倒计时时间。
倒计时使用了uniapp插件市场里的一个组件(组件地址:https://ext.dcloud.net.cn/plugin?id=772)
实现思路:
1:先获取当前时间戳:;
2:10分钟的毫秒数为10x60x1000毫秒,订单自动支付时间为=订单创建时间 + 10x60x1000毫秒 ;
3:订单自动支付时间 - 当前时间时间 =相差时间 ,如果相差时间大于10分钟则执行取消订单操作,否则则计算相差时间的时分秒进行显示倒计时;
程序设计:
// 计算支付倒计时
let nowtime = Date.parse(new Date()); //获取当前时间
let paytime = 10 * 60 * 1000 //10min的秒数,订单超过10分钟未支付就自动取消
let ctime = _this.data.create_time * 1000
let startTime = nowtime; // 开始时间
let endTime = new Date(ctime+paytime); // 结束时间
let usedTime = endTime-startTime ; // 相差的毫秒数
// console.log("【相差的毫秒数】", usedTime)
if (usedTime > paytime) {
_this.timeUp() //取消订单操作函数
} else {
let days = Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数
let leavel = usedTime % (24 * 3600 * 1000); // 计算天数后剩余的时间
let hours = Math.floor(leavel / (3600 * 1000)); // 计算剩余的小时数
let leavel2 = leavel % (3600 * 1000); // 计算剩余小时后剩余的毫秒数
let minutes = Math.floor(leavel2 / (60 * 1000)); // 计算剩余的分钟数
let miao = Math.floor(leavel2 / 1000 % 60)
if (days <= 0 && hours <= 0 && minutes <= 0 && miao <= 0) {
_this.timeUp() //取消订单操作函数
} else {
_this.hour = days * 24 + hours //倒计时剩余小时
_this.minute = minutes //倒计时剩余分钟
_this.second = miao //倒计时剩余秒数
// console.log("剩余时间", (days * 24 + hours) + '小时' + minutes + '分' + miao + '秒');
}
}
网友评论