用JS写一个倒计时

文章讲述了如何利用JavaScript的Date对象和Date.parse方法创建一个两小时的倒计时功能,该倒计时在到达设定时间后会自动重置。通过获取当前时间的年、月、日和小时,并拼接成期望的日期时间格式,然后计算与目标时间的毫秒差值,转换为小时、分钟和秒,最后用定时器实现周期性更新显示。

我们在这里写一个两小时的倒计时,且每次到点都会重新开始一次计时,话不多说,直接上代码。

写法:

Date.parse()会将日期时间转换为毫秒数,所以可以通过两个时间的毫秒数相减得到一个倒计时;

首先要了解Date.parse()中的值要是"2022-9-16 16:00:00"这种时间写法,或者是newDate()当前的时间点;

所以我们通过new Date.getFullYear(),new Date.getMonth()+1,new Date.getDate()来分别获取当前的年月日(注意:月份是从第0位开始算,所以得到的值要+1才是当前月份),

然后通过+拼接字符串的得到"2022-9-46"这种形式;

之后再通过new Date().getHours()获取当前的小时,因为我们写的是两小时的倒计时,所以我们在这里用三目运算符判断当计时开始后两小时后是几点,避免当14时开始倒计时,结束时间应该是16点,而到15点时,重新计时,结束时间变为17点;

现在我们年月日时间都有了,通过拼接nian+" "+shi+":00:00"来获得"2022-9-16 16:00:00"这种格式;

用Date.parse(之前拼接得到的时间)-Date.parse(new Date())就得到了两个时间的毫秒差值;

用毫秒差值进行计算,将还剩多少毫秒转换为还剩多少时多少分多少秒;

最后通过定时器来让方法重复执行,就可以得到图2的效果。

(๑•̀ㅂ•́)و✧(๑•̀ㅂ•́)و✧(๑•̀ㅂ•́)و✧(๑•̀ㅂ•́)و✧(๑•̀ㅂ•́)و✧(๑•̀ㅂ•́)و✧(๑•̀ㅂ•́)و✧

可以使用JavaScript的Date对象和定时器函数setInterval来实现一个简单的倒计时。 HTML部分: ```html <div id="countdown"></div> ``` JavaScript部分: ```javascript // 目标日期,格式为"年-月-日 时:分:秒" var targetDate = "2021-12-31 23:59:59"; // 获取目标日期的时间戳 var targetTime = new Date(targetDate).getTime(); // 定义定时器函数 var timer = setInterval(function() { // 获取当前时间的时间戳 var nowTime = new Date().getTime(); // 计算剩余时间的毫秒数 var remainingTime = targetTime - nowTime; // 如果剩余时间小于等于0,停止定时器 if (remainingTime <= 0) { clearInterval(timer); document.getElementById("countdown").innerHTML = "倒计时已结束"; return; } // 将毫秒数转换为天、小时、分钟、秒 var days = Math.floor(remainingTime / (1000 * 60 * 60 * 24)); var hours = Math.floor((remainingTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((remainingTime % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((remainingTime % (1000 * 60)) / 1000); // 将倒计时显示在页面上 var countdownStr = "倒计时:" + days + "天" + hours + "小时" + minutes + "分" + seconds + "秒"; document.getElementById("countdown").innerHTML = countdownStr; }, 1000); ``` 上面的代码中,首先定义了目标日期和目标日期的时间戳。然后使用setInterval函数每隔1秒执行一次定时器函数。在定时器函数中,首先获取当前时间的时间戳,然后计算剩余时间的毫秒数。如果剩余时间小于等于0,说明倒计时已结束,停止定时器并在页面上显示相应信息。否则,将剩余时间转换为天、小时、分钟、秒,然后将倒计时显示在页面上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值