前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JavaScript】内置对象 - Date 日期对象 ④ ( 制作倒计时页面 )

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

作者头像
韩曙亮
发布2024-05-14 08:46:35
1230
发布2024-05-14 08:46:35
举报
文章被收录于专栏:韩曙亮的移动开发专栏
文章目录

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

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

在这里插入图片描述
在这里插入图片描述

一、倒计时页面实现


1、需求分析

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

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

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

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

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

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

2、计算秒数

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

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

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

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

代码示例 :

代码语言:javascript
复制
            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 ;

代码示例 :

代码语言:javascript
复制
            // 计算剩余时间的 天 时 分 秒 时间

            // 秒
            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 标签 , 显示时间 ;

代码语言:javascript
复制
<body>
    <h1 id="countdown"></h1>
</body>

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

代码语言:javascript
复制
            // 将倒计时设置到页面中
            document.getElementById("countdown").innerHTML = day + " 天 " + hour + " 时 " + minute + " 分 " + second + " 秒";     

最终效果如下 :

在这里插入图片描述
在这里插入图片描述

二、完整代码示例


1、完整代码

代码语言:javascript
复制
<!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、执行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、倒计时页面实现
    • 1、需求分析
      • 2、计算秒数
        • 3、计算倒计时时间的 天 / 时 / 分 / 秒
          • 4、页面中显示倒计时时间
          • 二、完整代码示例
            • 1、完整代码
              • 2、执行结果
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档