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

发布于 2022-09-12 13:34:11 字数 57 浏览 21 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷路的信 2022-09-19 13:34:11

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

const target = 1606981908 * 1000 // 目标时间毫秒时间戳
function fn () {
    setTimeout(() => {
        if(target <= Date.now()) {
            // 定时结束
        } else {
            // 递归自身
            fn()
        }
    }, 1000)
}
妄断弥空 2022-09-19 13:34:11

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

巷雨优美回忆 2022-09-19 13:34:11

若后端给的时间戳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)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文