核心算法:
- 輸入的時間減去如今的時間就是剩餘的時間,可是不能拿着時分秒相減,好比05分減去25分,結果會是負的。
- 能夠用時間戳來作,用戶輸入時間總的毫秒數減去如今時間的總的毫秒數,獲得的就是剩餘時間的毫秒數。
- 把剩餘時間總的毫秒數轉換爲天、時、分、秒 (時間戳轉換爲時分秒)。
- 轉換公式以下:
d = parseInt(總秒數/60/60/24); // 計算天數
h = parseInt(總秒數/60/60 %24) // 計算小時
m = parseInt(總秒數/60%60); // 計算分數
s = parseInt(總秒數%60); // 計算當前秒數
代碼實現:
function countDown(time) {
var nowTime = +new Date(); // 返回的是當前時間總的毫秒數
var inputTime = +new Date(time); // 返回的是用戶輸入時間總的毫秒數
var times = (inputTime - nowTime) / 1000; // times是剩餘時間總的秒數
var d = parseInt(times / 60 / 60 / 24); // 天
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); //時
h = h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); // 分
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60); // 當前的秒
s = s < 10 ? '0' + s : s;
return d + '天' + h + '時' + m + '分' + s + '秒';
}
console.log(countDown('2020-10-9 00:00:00')); //設置的倒計時截止日期爲2020年10月9日00點
輸出結果:
02天03時08分44秒