案例分析:
1.核心算法:输入时间(inputTime)-现在时间(nowTime) =剩余时间(times),即倒计时,但是不能拿着时分秒相减,比如05分减去25分--结果会成负数。
2.用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。(时间戳时间的单位都是:毫秒数)
故若要转换/1000——>转化成秒
3.相减后得到的剩余时间毫秒数通过算法转换成天、时、分、秒(时间戳转化成时分秒)
转换公式如下:
d = parseInt(总秒数/60/60/24); //天数
h = parseInt(总秒数/60/60%24); //时
m = parseInt(总秒数/60%60); //分
s = parseInt(总秒数%60); //秒
代码实现:
<script>
function countDown(time){
var nowTime = +new Date();
var inputTime = +new Date(time);
var times = (inputTime-nowTime)/1000; //输出时间-现在时间==时间戳相减等毫秒,故/1000
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('2022-7-22 19:56:05'));
</script>
补充:标准格式化输出当前时间
var date = new Date();
console.log(date);