• 根据后端传的时间前端js进行倒计时


    一、故事背景:

    1. 今天公司有个项目需求
    2. 在前端页面实现一个倒计时功能
    3. 初步设想:后端根据需求规定一个未来的时间,前端根据当前时间进行计算
    4. 然后将时间格式化,时分秒的格式
    5. 时间倒计时完成,刷新页面获取最新的页面
    6. 最后在前端展示;大致是这样

    二、上代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div class="js_time_txt">
    </div>
    
    <script src="./jquery-3.3.1.min.js"></script>
    <script>
        $(function () {
    // 倒计时
            var _ordertimer = null;
            var data = new Date();
            var txt = $('.js_time_txt');
            var buyTime = '2018-09-20 22:25:59'; //开抢时间
            var nowTime = '2018-09-20 22:23:45'; //接口返回当前时间
            var dateDiff = new Date(nowTime) - new Date(getnow()); //请求时间戳与本地时间戳
            if (dateDiff < 0) {
                dateDiff = Math.abs(dateDiff);
            }
    
            if (new Date(nowTime) > new Date(buyTime)) {
                $('.time-range').hide(); //已开枪
                return;
            } else {
                leftTimer(buyTime);
                _ordertimer = setInterval(function () {
                    leftTimer(buyTime)
                }, 1000);
            }
    
            // 获取当前时间 xxxx/xx/xx 00:00:00
            function getnow() {
                var year = data.getFullYear();
                var month = parseInt(data.getMonth() + 1) >= 10 ? parseInt(data.getMonth() + 1) : '0' + parseInt(data.getMonth() + 1);
                var day = data.getDate();
                var hours = data.getHours();
                var minutes = data.getMinutes();
                var seconds = data.getSeconds();
                var now = year + '/' + month + '/' + day + ' ' + hours + ':' + minutes + ':' + seconds;
                return now;
            }
    
            function leftTimer(enddate) {
    
                var leftTime = (new Date(enddate)) - new Date + dateDiff;
    
                var days = parseInt(leftTime / 1000 / 60 / 60 / 24, 10); //计算剩余的天数
                var hours = parseInt(leftTime / 1000 / 60 / 60 % 24, 10); //计算剩余的小时
                var minutes = parseInt(leftTime / 1000 / 60 % 60, 10);//计算剩余的分钟
                var seconds = parseInt(leftTime / 1000 % 60, 10);//计算剩余的秒数
                days = checkTime(days);
                hours = checkTime(hours);
                minutes = checkTime(minutes);
                seconds = checkTime(seconds);
    
                if (days >= 0 || hours >= 0 || minutes >= 0 || seconds >= 0)
                    txt.html(days + "" + hours + "小时" + minutes + "" + seconds + "");
                if (days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0) {
                    window.clearInterval(_ordertimer);
                    _ordertimer = null;
                }
            }
    
            function checkTime(i) { //将0-9的数字前面加上0,例1变为01
                if (i < 10) {
                    i = "0" + i;
                }
                return i;
            }
        })
    </script>
    </body>
    </html>

    三、由于前端水平太差,就为以后再次出现类似需求,粘贴复制,多捞哦~

  • 相关阅读:
    561. Array Partition I
    448. Find All Numbers Disappeared in an Array
    136. Single Number
    485. Max Consecutive Ones
    463. Island Perimeter
    496. Next Greater Element I
    344. Reverse String
    【.net项目中。。】.net一般处理程序使用方法
    【ExtAspNet学习笔记】ExtAspNet控件库中常见问题
    用VS2010创建三层架构开发模式及三层架构的研究
  • 原文地址:https://www.cnblogs.com/supery007/p/9683778.html
Copyright © 2020-2023  润新知