JavaScript實現(xiàn)倒計時功能2種方法實例
封裝時間函數(shù)
代碼如下
function getTime() { var t = new Date(); var y = t.getFullYear(); var m = t.getMonth() + 1 > 10 ? t.getMonth() + 1 : '0' + (t.getMonth() + 1); var d = t.getDate() > 10 ? t.getDate() : '0' + t.getDate(); var h = t.getHours() > 10 ? t.getHours() : '0' + t.getHours(); var mt = t.getMinutes() > 10 ? t.getMinutes() : '0' + t.getMinutes(); var s = t.getSeconds() > 10 ? t.getSeconds() : '0' + t.getSeconds(); return y + '-' + m + '-' + d + ' ' + h + ':' + mt + ':' + s; } console.log(getTime());
**注意:**在上方函數(shù)中,月份需要+1,并且為了美觀,通過三元表達式來給小于‘10’的月份、日期、時間加‘0’。
var m = t.getMonth() + 1 > 10 ? t.getMonth() + 1 : '0' + (t.getMonth() + 1);
實現(xiàn)倒計時
方法一
1.使用 new Date() 獲取當前時間,使用 new 調(diào)用一個帶有參數(shù)的 Date 對象,定義結(jié)束的時間,endtime=new Date(2020/8/8)。使用 getTime() 方法獲取現(xiàn)在時和結(jié)束時距離 1970 年 1 月 1 日的毫秒數(shù)。然后,求兩個時間差。
2.把時間差轉(zhuǎn)換為天數(shù)、小時數(shù)、分鐘數(shù)和秒數(shù)顯示。主要是用%取模運算。得到距離結(jié)束時間的毫秒數(shù)(剩余毫秒數(shù)),除以 1000 得到剩余秒數(shù),再除以 60 得到剩余分鐘數(shù),再除以 60 得到剩余小時數(shù)。除以 24 得到剩余天數(shù)。剩余秒數(shù) lefttime/1000 模 60 得到秒數(shù),剩余分鐘數(shù) lefttime/(1000 * 60) 模 60 得到分鐘數(shù),剩余小時數(shù) lefttime/(1000 * 60 * 60) 模 24 得到小時數(shù)。
代碼如下:
var showtime = function () { var nowtime = new Date(), //獲取當前時間 endtime = new Date("2023/6/18"); //定義結(jié)束時間 var lefttime = endtime.getTime() - nowtime.getTime(), //距離結(jié)束時間的毫秒數(shù) d= Math.floor(lefttime/(1000*60*60*24)), //計算天數(shù) h = Math.floor(lefttime/(1000*60*60)%24), //計算小時數(shù) m= Math.floor(lefttime/(1000*60)%60), //計算分鐘數(shù) s= Math.floor(lefttime/1000%60); //計算秒數(shù) return d+ "天" + h+ ":" + m+ ":" + s; //返回倒計時的字符串 }
方法二
1.同方法一
2.定義day,hour,min,sen用來定義倒計時的天、時、分、秒,然后parseInt用來將得到的值轉(zhuǎn)化為整數(shù)形式,再用得到的秒/60得到多少分再/60得到多少時再/24得到多少天。最后,hour/60/60%24
:用所得的時間把大數(shù)除以24取余得到還要多少小時,分,秒同理。
代碼如下:
function getCountdown(time) { var newTime = +new Date(); var futureTime = +new Date(time); var time = (futureTime - newTime) / 1000 //把毫秒數(shù)變成秒數(shù) var d = parseInt(time / 3600 / 24)// 天數(shù) var h = parseInt(time / 3600 % 24)// 小時 var m = parseInt(time / 60 % 60)// 分鐘 var s = parseInt(time % 60)//秒 return d + '天' + h + '時' + m + '分' + s + '秒' }
最后附上兩種倒計時完整代碼,一種為頁面打印,一種為彈窗顯示。
實時在頁面展示
代碼如下:
<p>倒計時:<span>0</span>天<span>0</span>時<span>0</span>分<span>0</span>秒</p> <script> function showTime() { var spans = document.querySelectorAll('span'); var endTime = new Date('2023-06-18 00:00:00').getTime(); var newTime = new Date().getTime(); var diffTime = (endTime - newTime) / 1000; var day = parseInt(diffTime / 60 / 60 / 24); var honur = parseInt(diffTime / 60 / 60 % 24); var min = parseInt(diffTime / 60 % 60); var sen = parseInt(diffTime % 60); spans[0].innerText = day; spans[1].innerText = honur; spans[2].innerText = min; spans[3].innerText = sen; } setInterval(showTime, 1000) </script>
用戶彈框輸入自行倒計時
代碼如下:
<script> function getCountdown(time) { var newTime = +new Date(); var futureTime = +new Date(time); var time = (futureTime - newTime) / 1000 //把毫秒數(shù)變成秒數(shù) var d = parseInt(time / 3600 / 24)// 天數(shù) var h = parseInt(time / 3600 % 24)// 小時 var m = parseInt(time / 60 % 60)// 分鐘 var s = parseInt(time % 60)//秒 return d + '天' + h + '時' + m + '分' + s + '秒' } var year = prompt('年份'); var months = prompt('月份'); var days = prompt('日'); var hours = prompt('時'); var minutes = prompt('分'); var seconds = prompt('秒'); var futureTime = year + '-' + months + '-' + days + ' ' + hours + ':' + minutes + ':' + seconds; alert(getCountdown(futureTime)); </script>
附:基于JavaScript實現(xiàn)自動更新倒計時效果
實現(xiàn)倒計時效果需要掌握js中的兩個知識點:
1、setTimeout函數(shù) 每隔1秒鐘更新秒鐘時間
2、Date對象 計算時間差
下面貼出 元旦倒計時代碼
<!DOCTYPE html> <html> <head> <title>example.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script> //定義計時器,每隔1秒鐘調(diào)用timer函數(shù) var timerCount= window.setTimeout("timer()",1000); function timer(){ var date=new Date("2017","1","1","0","0","0"); var deadlineTime=date.getTime(); var nowDate=new Date(); var nowTime=nowDate.getTime(); var distTime=deadlineTime-nowTime; //判斷是否到達時間期限 if(distTime>0){ var d=Math.floor(distTime/1000/3600/24); var h=Math.floor(distTime/1000/3600%24); var m=Math.floor(distTime/1000/60%60); var s=Math.floor(distTime/1000%60); var str="距離2017年元旦還有"+d+"天"+h+"時"+m+"分"+s+"秒"; document.getElementById("timeout").innerHTML=str; timerCount= window.setTimeout("timer()",1000); } else{ //到達時間期限的時候清楚計時器; window.clearTimeout(timerCount); alert("時間已到"); } } </script> </head> <body> <p id="timeout"> </p> </html>
總結(jié)
到此這篇關于JavaScript實現(xiàn)倒計時功能2種方法的文章就介紹到這了,更多相關JSt倒計時功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
前端JavaScript經(jīng)典之Promise詳解
Promise是為了解決回調(diào)地獄問題而誕生的,它提供了優(yōu)雅的異步回調(diào)解決方案,這篇文章主要介紹了前端JavaScript經(jīng)典之Promise的相關資料,需要的朋友可以參考下2024-09-09javascript實現(xiàn)label標簽跳出循環(huán)操作
這篇文章主要為大家詳細介紹了javascript實現(xiàn)label標簽跳出循環(huán)操作,感興趣的朋友可以參考一下2016-03-03JS控制網(wǎng)頁動態(tài)生成任意行列數(shù)表格的方法
這篇文章主要介紹了JS控制網(wǎng)頁動態(tài)生成任意行列數(shù)表格的方法,實例分析了javascript操作表格節(jié)點控制dom元素添加的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03Area 區(qū)域?qū)崿F(xiàn)post提交數(shù)據(jù)的js寫法
這篇文章主要介紹了在Area區(qū)域的里 實現(xiàn)post 提交數(shù)據(jù) 的js寫法,需要的朋友可以參考下2014-04-04推薦一個封裝好的getElementsByClassName方法
這篇文章主要推薦一個封裝好的getElementsByClassName方法,需要的朋友可以參考下2014-12-12