当前位置: 首页>前端>正文

【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 )


文章目录

  • 一、倒计时页面实现
  • 1、需求分析
  • 2、计算秒数
  • 3、计算倒计时时间的 天 / 时 / 分 / 秒
  • 4、页面中显示倒计时时间
  • 二、完整代码示例
  • 1、完整代码
  • 2、执行结果



Date 日期对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date


【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 ),【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 )_Date,第1张


一、倒计时页面实现


1、需求分析


给定一个固定的时间 , 如 2024 年 5 月 8 日 0 时 0 分 0 秒 作为终止时间 ;

倒计时 显示 的是 剩余时间 ;

使用 终止时间 减去 当前时间 , 就是要显示的 剩余时间 ;

上述的 时间 , 都要使用 时间戳进行计算 ;


最终 将 要显示的 剩余时间 通过计算 转为 时分秒 数值 ;

  • 毫秒时间戳 转为 秒 只需要 除以 1000 即可 , 得到一个 秒数 ;
  • 秒数 直接 模 60 就是 秒时间 ;
  • 秒数 除以 60 得到的是 分数 , 模 60 得到的是 分时间 ;
  • 分数 除以 60 得到的是 小时数 , 模 24 得到的是 小时时间 ;
  • 小时数 除以 24 得到的是 天数 ;

2、计算秒数


给定一个结束时间的字符串 , 并使用 +new Date 的方式 , 获取该时间字符串对应的 Date 对象的 时间戳 ;

使用 +new Date() 可以获取当前的时间戳 ;

上述两个时间戳 都是 毫秒时间戳 ;

二者相减 , 得到的是 毫秒时间 , 需要再除以 1000 , (endTimeStamp - nowTimeStamp) / 1000 , 就可以得到倒计时秒数 ;


代码示例 :

var timeStr = '2024-05-09 11:11:11';

            // 获取当前时间戳
            var nowTimeStamp = +new Date();

            // 获取结束时间戳
            var endTimeStamp = +new Date(timeStr);

			// 获取剩余的秒数
            var seconds = (endTimeStamp - nowTimeStamp) / 1000;


3、计算倒计时时间的 天 / 时 / 分 / 秒


总秒数 模 60 , 就是 时间对应的 秒 , seconds % 60 ;

使用三目运算符 , 令 秒时间 始终保证是 两位数显示 , 如果小于 10 , 则在前面补 0 , second < 10 ? '0' + second : second ;


总秒数 除以 60 得到 总分钟数 , 一分钟 60 秒 , 再 模 60 , 得到的就是 时间分钟 , seconds / 60 % 60 ;

使用三目运算符 , 令 分时间 始终保证是 两位数显示 , 如果小于 10 , 则在前面补 0 , minute < 10 ? '0' + minute : minute ;


总秒数 除以 60 得到 总分钟数 , 再除以 60 得到总小时数 , 一天 24 小时 , 再模 24 , 得到的就是 时间小时 , seconds / 60 / 60 % 24 ;

使用三目运算符 , 令 小时时间 始终保证是 两位数显示 , 如果小于 10 , 则在前面补 0 , hour < 10 ? '0' + hour : hour ;


总秒数 除以 60 得到 总分钟数 , 再除以 60 得到总小时数 , 再除以 24 , 得到的就是 天时间 , seconds / 60 / 60 / 24 ;

使用三目运算符 , 令 天时间 始终保证是 两位数显示 , 如果小于 10 , 则在前面补 0 , day < 10 ? '0' + day : day ;


代码示例 :

// 计算剩余时间的 天 时 分 秒 时间

            // 秒
            var second = parseInt(seconds % 60);
            // 保证秒是两位数的
            second = second < 10 ? '0' + second : second;

            // 分
            var minute = parseInt(seconds / 60 % 60);
            // 保证分是两位数的
            minute = minute < 10 ? '0' + minute : minute;

            // 时
            var hour = parseInt(seconds / 60 / 60 % 24);
            // 保证时是两位数的
            hour = hour < 10 ? '0' + hour : hour;

            // 天
            var day = parseInt(seconds / 60 / 60 / 24);
            // 保证天是两位数的
            day = day < 10 ? '0' + day : day;


4、页面中显示倒计时时间


在 body 标签中设置一个 HTML 标签 , 显示时间 ;

<body>
    <h1 id="countdown"></h1>
</body>

调用 document.getElementById 函数 , 获取 HTML 标签元素 , 为其设置倒计时文本 ;

// 将倒计时设置到页面中
            document.getElementById("countdown").innerHTML = day + " 天 " + hour + " 时 " + minute + " 分 " + second + " 秒";

最终效果如下 :

【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 ),【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 )_内置对象_02,第2张


二、完整代码示例


1、完整代码


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <!-- 设置 meta 视口标签 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JavaScript</title>
    <style></style>
    <script>
        // Date 内置对象

        // 倒计时方法 , 之后每隔 1 秒调用一次
        function countDown() {
            var timeStr = '2024-05-09 11:11:11';

            // 获取当前时间戳
            var nowTimeStamp = +new Date();

            // 获取结束时间戳
            var endTimeStamp = +new Date(timeStr);

            // 获取剩余的秒数
            var seconds = (endTimeStamp - nowTimeStamp) / 1000;

            // 计算剩余时间的 天 时 分 秒 时间

            // 秒
            var second = parseInt(seconds % 60);
            // 保证秒是两位数的
            second = second < 10 ? '0' + second : second;

            // 分
            var minute = parseInt(seconds / 60 % 60);
            // 保证分是两位数的
            minute = minute < 10 ? '0' + minute : minute;

            // 时
            var hour = parseInt(seconds / 60 / 60 % 24);
            // 保证时是两位数的
            hour = hour < 10 ? '0' + hour : hour;

            // 天
            var day = parseInt(seconds / 60 / 60 / 24);
            // 保证天是两位数的
            day = day < 10 ? '0' + day : day;

            // 将倒计时设置到页面中
            document.getElementById("countdown").innerHTML = day + " 天 " + hour + " 时 " + minute + " 分 " + second + " 秒";
        }

        setInterval(countDown, 1000);
    </script>
</head>

<body>
    <h1 id="countdown"></h1>
</body>

</html>


2、执行结果


【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 ),【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 )_内置对象_03,第3张

【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 ),【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 )_Date_04,第4张



https://www.xamrdz.com/web/2qa1960050.html

相关文章: