JavaScript的Date方法实现倒计时

676 阅读1分钟
<!DOCTYPE html>

<html lang="en">

\


<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">

    <title>Document</title>

    <style>

        html {

            font-size50px;

        }

        

        * {

            font-size0.36rem;

        }

        

        .time {

            text-align: center;

            font-size0.36rem;

            width1rem;

        }

        

        .div1 {

            border1px solid steelblue;

            height5rem;

            position: absolute;

            width10rem;

            left0;

            right0;

            top0;

            bottom0;

            margin: auto;

            border-radius15px;

            background#757F9A;

            /* fallback for old browsers */

            background-webkit-linear-gradient(to right, #D7DDE8#757F9A);

            /* Chrome 10-25, Safari 5.1-6 */

            backgroundlinear-gradient(to right, #D7DDE8#757F9A);

            /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */

        }

        

        .div2 {

            position: absolute;

            background-color: tomato;

            border1px solid steelblue;

            height0.66rem;

            width6.5rem;

            left0;

            right0;

            top1.2rem;

            bottom0;

            margin: auto;

        }

        

        .div3 {

            width6rem;

            margin0 auto;

        }

    </style>

</head>

\


<body>

\


    <div class="div1">

        <div class="div3">

\


            <label for="sTime">倒计时结束时间:</label> <input type="text" id="eTime" value="2021-7-23 18:00:00">

            <input type="button" value="确定" id="btn" class="btn btn-primary">

\


        </div>

\


        <div class="div2">

            <input type="text" id="day" readonly='readonly' class="time">天

            <input type="text" id="hour" readonly='readonly' class="time">时

            <input type="text" id="minute" readonly='readonly' class="time">分

            <input type="text" id="second" readonly='readonly' class="time">秒

        </div>

\


    </div>

\
\
\
\


</body>

<script>

    // 核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时 ,但是不能拿着时分秒

    // 相减,比如 05 分减去25分,结果会是负数的。

    // 用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时

    // 间的毫秒数。

    // 把剩余时间总的毫秒数转换为天、时、分、秒 (时间戳转换为时分秒)

    // 转换公式如下:

    // d = parseInt(总秒数/ 60/60 /24); // 计算天数

    // h = parseInt(总秒数/ 60/60 %24) // 计算小时

    // m = parseInt(总秒数 /60 %60 ); // 计算分数

    // s = parseInt(总秒数%60); // 计算当前秒数

    //页面加载调用

\


    window.onload = function() {

        //每1秒刷新时间

\
\


        setInterval("endTime()"1000);

\
\
\


    }

\


    function endTime() {

        const btn = document.getElementById("btn");

        // if (btn.onclick = function() {

        //         let getStime = document.getElementById("sTime").value;

        //         console.log(getStime);

        //     })

\


        let getEtime; //前台获取的结束时间

        getEtime = document.getElementById("eTime").value;

        btn.onclick = function() {

            getEtime = document.getElementById("eTime").value;

        }

        let nowTime; //开始时间

        let inputTime; //结束时间

\
\


        nowTime = Date.now();

        inputTime = +new Date(getEtime);

        console.log(nowTime + '@');

        console.log(inputTime);

        let times = (inputTime - nowTime) / 1000;

        let d = parseInt(times / 60 / 60 / 24);

        d = d < 10 ? '0' + d : d;

        let h = parseInt(times / 60 / 60 % 24);

        h = h < 10 ? '0' + h : h;

        let m = parseInt(times / 60 % 60);

        m = m < 10 ? '0' + m : m;

        let s = parseInt(times % 60);

        s = s < 10 ? '0' + s : s;

        document.getElementById("day").value = d;

        document.getElementById("hour").value = h;

        document.getElementById("minute").value = m;

        document.getElementById("second").value = s;

        //document.getElementById("nowtime").innerHTML = "倒计时:" + d + "天  " + h + "时" + m + "分" + s + '秒';

    }

</script>

\


</html>

输入结束时间,程序会以当前时间为引,计算倒计时,通过setInterval("endTime()", 1000);1秒刷新一次,从而使秒数实时更新。 运行结果如下:

图片.png