时间戳转半小时倒计时,请问怎么实现呢

有个订单待支付,后端给一个时间戳1606981908怎么转成半小时的倒计时

阅读 3.8k
3 个回答

后端返回的是一个秒为单位的时间戳。

const target = 1606981908 * 1000 // 目标时间毫秒时间戳
function fn () {
    setTimeout(() => {
        if(target <= Date.now()) {
            // 定时结束
        } else {
            // 递归自身
            fn()
        }
    }, 1000)
}

假如给定的时间戳是订单创建时间,那么拿着这个时间戳 加上30 60(时间戳为s, ms的话 再 1000),这里称之为订单过期时间。 再开启一个定时器,每秒执行,让订单创建时间+1, 直到大于等于过期时间,停止倒计时提示订单超时未支付。(这里如果存在退出订单再进入的话,就以当前时间 与 订单时间以及过期时间做对比),

若后端给的时间戳1606981908为订单创建时间,代码如下:

countDown() {
    let orderTime = 1606981908
    let now = new Date()
    let end = new Date(orderTime * 1000 + 30 * 60 * 1000) //提交创建时间+30分钟即是订单失效时间
    let result = Math.floor(end - now) / 1000 //两个时间相减得到毫秒时间差,并转换成秒
    let interval = setInterval(() => {
        if (result > 1) {
            result -= 1
            let second = Math.floor(result % 60) // 计算秒
            let minite = Math.floor((result / 60) % 60) //计算分
            this.message = `支付剩余时间:${minite}分 ${second}秒`
        } else{
            //倒计时结束后
            this.message = '未在规定时间内支付,订单已失效!'
            window.clearInterval(interval);  
        }
    },1000)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题