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

文章目录

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


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


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/05f51bf920ce4e26b30ee1f819527362.gif)



一、倒计时页面实现




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 + " 秒";     

最终效果如下 :
在这里插入图片描述





二、完整代码示例




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、执行结果


在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

晨华城乡社区网格化建设实施

一、目标任务 开展社会服务网格化管理工作的目标是为了实现基层社会治理管理体系全覆盖。全面形成指挥有力、协调顺畅、运转高效的运行体系&#xff0c;普遍建立覆盖城乡、行为规范、富有活力的组织网络&#xff0c;建立健全服务民生、维护稳定、推动发展的制度机制&#xff0…

速卖通商品评论API(aliexpress.item_review)返回值全解析

在电商领域&#xff0c;用户评论对于产品的推广和销售具有极其重要的影响。速卖通&#xff08;AliExpress&#xff09;作为全球知名的跨境电商平台&#xff0c;提供了丰富的API接口供开发者使用&#xff0c;其中aliexpress.item_review API允许开发者获取商品的评论信息。本文将…

品质为王:高效溶解性鱼油胶囊的软胶囊弹性硬度测试解析

品质为王&#xff1a;高效溶解性鱼油胶囊的软胶囊弹性硬度测试解析 在当今的健康产品市场中&#xff0c;高效溶解性鱼油胶囊以其独特的营养价值和吸收效率赢得了众多消费者的青睐。然而&#xff0c;要想在激烈的市场竞争中脱颖而出&#xff0c;产品的品质保证至关重要。其中&a…

关于Kubernetes介绍及使用

Kubernetes简介及使用 Kubernetes&#xff08;简称K8s&#xff09;&#xff0c;是Google开源的容器编排平台&#xff0c;用于管理和自动化容器化应用的部署、扩展和运行。它最初由Google工程师开发&#xff0c;并于2015年捐赠给云原生计算基金会&#xff08;CNCF&#xff09;。…

深入理解WPF的ResourceDictionary

深入理解WPF的ResourceDictionary 介绍 在WPF中&#xff0c;ResourceDictionary用于集中管理和共享资源&#xff08;如样式、模板、颜色等&#xff09;&#xff0c;从而实现资源的重用和统一管理。本文详细介绍了ResourceDictionary的定义、使用和合并方法。 定义和用法 Res…

鸿蒙内核源码分析(信号消费篇) | 谁让CPU连续四次换栈运行

本篇有相当的难度&#xff0c;涉及用户栈和内核栈的两轮切换&#xff0c;CPU四次换栈&#xff0c;寄存器改值&#xff0c;将围绕下图来说明. 解读 为本篇理解方便&#xff0c;把图做简化标签说明: user:用户空间kernel:内核空间source(…):源函数sighandle(…):信号处理函数&a…

【操作系统】进程与线程概念基础知识

进程与线程概念基础知识 进程进程的概念进程控制块进程状态进程三状态模型挂起进程模模型进程的上下文切换进程控制 线程为什么引入线程线程的概念线程与进程的比较线程的上下文切换线程的实现 进程 进程的概念 1. 进程的定义&#xff1a; 进程是指一个具有一定独立功能的程序…

【面试干货】http请求报文的组成与作用?

【面试干货】http请求报文的组成与作用&#xff1f; 一、http 的请求报文组成二、请求行&#xff08;Request Line&#xff09;三、请求头部&#xff08;Request Headers&#xff09;四、请求体&#xff08;Request Body&#xff09;五、响应头部 &#xff08;Response Headers…

iframe的基本用法

一、背景 在web页面开发中,有时会遇到在一个应用A的页面中引用应用B的页面,此时就需要在应用A中使用iframe嵌入引用B的页面了,比如多租户的web应用,或者门户系统的智能客服助手弹框应用,博主也是在做通用智能客服应用的过程中用到了iframe。网络上有关iframe的信息虽然很…

2024.04.19校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招&转正实习 | 美团无人机业务部招聘&#xff08;内推&#xff09; 校招&转正实习 | 美团无人机业务部招聘&#xff08;内推&#xff09; 2、校招&实习 | 快手 这些岗位…

Terraform模块重构

本节介绍的通过moved块进行模块重构的功能是从Terraform v1.1开始被引入的&#xff0c;如果要在之前的版本进行这样的操作&#xff0c;必须通过terraform state mv命令来完成。 对一些旨在被人复用的老模块来说&#xff0c;最初的模块结构和资源名称可能会逐渐变得不再合适。例…

银河麒麟桌面版开机后网络无法自动链接 麒麟系统开机没有连接ens33

1.每次虚拟机开机启动麒麟操作系统&#xff0c;都要输入账号&#xff0c;密码。 进入点击这个ens33 内网才连接 2. 如何开机就脸上呢&#xff1f; 2.1. 进入 cd /etc/sysconfig/network-scripts 2.2 修改参数 onbootyes 改为yes 2.3 重启即可 a. 直接重启机器查看是否正常&…

工程伦理课堂记录

文章目录 0. 导论0.1 工程伦理教育的意义0.2 工程伦理教育要实现的目标 1. 工程与伦理1.1 工程伦理学科的产生1.2 工程和技术1.3 工程概念的理解演进1.4 工程的过程1.5 工程的特点1.6 工程活动的七个维度总结 2. 伦理2.1 道德伦理的概念2.2 道德伦理的关系2.3 伦理规范2.4 伦理…

【吃透Java手写】2-Spring(下)-AOP-事务及传播原理

【吃透Java手写】Spring&#xff08;下&#xff09;AOP-事务及传播原理 6 AOP模拟实现6.1 AOP工作流程6.2 定义dao接口与实现类6.3 初始化后逻辑6.4 原生Spring的方法6.4.1 实现类6.4.2 定义通知类&#xff0c;定义切入点表达式、配置切面6.4.3 在配置类中进行Spring注解包扫描…

Blender动画与云渲染:创造高质量作品的未来路径

Blender作为开源的3D图形软件&#xff0c;在多个领域广受欢迎。但随着项目复杂度提升&#xff0c;传统渲染方式受限。云渲染技术的兴起突破了这些限制&#xff0c;为创作者提供了更自由、高效的创作环境。 一、Blender动画项目的挑战 传统上&#xff0c;Blender动画渲染需要依…

五、 哪些情况下需要申报数据出境安全评估?

最新发布的《跨境流动规定》适度收窄了数据出境安全评估范围。具体而言&#xff0c;根据《跨境流动规定》和《评估申报指南&#xff08;第二版&#xff09;》的规定&#xff0c;当数据处理者向境外提供数据不属于《跨境流动规定》下的豁免情形时&#xff0c;且具有下列情形之一…

Linux文件系统的目录结构

Linux文件系统的目录结构 Linux文件系统的目录结构 Linux文件系统的目录结构是一种树状结构&#xff0c;最顶层是根目录 /。在这个目录下可以有很多子目录和文件。下面是一些常见的目录及其含义&#xff1a; /bin&#xff1a;二进制文件&#xff0c;基本命令&#xff0c;如ls…

代码审计-php篇之某CRM系统多处sql注入

&#x1f31f; ❤️ 作者&#xff1a;yueji0j1anke 首发于公号&#xff1a;剑客古月的安全屋 字数&#xff1a;3516 阅读时间: 35min 声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果…

信创基础软件之信创云介绍

信创基础软件之信创云介绍 信创云概述 信创云&#xff0c;是指在信息技术应用创新的背景下&#xff0c;以国产化的CPU、操作系统为底座的自主研发的云平台&#xff0c;统筹利用计算、存储、网络、安全、应用支撑、信息资源等软硬件资源&#xff0c;发挥云计算虚拟化、高可靠性…

实战 | 实时手部关键点检测跟踪(附完整源码+代码详解)

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…