一、Date内置对象(时间戳)
在做倒计时之前我们要了解 Date内置对象
该实例呈现时间中的某个时刻。Date 对象则基于 Unix Time Stamp,即自1970年1月1日(UTC)起经过的毫秒数。
创建一个新Date对象的唯一方法是通过new 操作符
例如:
let now = new Date();
若将它作为常规函数调用(即不加 new 操作符),将返回一个字符串,而非 Date 对象。
有三种方法获得总的毫秒数
如下:
// 1. 通过 valueOf() getTime()
var date = new Date();
console.log(date.valueOf()); // 就是 我们现在时间 距离1970.1.1 总的毫秒数
console.log(date.getTime());
// 2. 简单的写法 (最常用的写法)
var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
console.log(date1);
// 3. H5 新增的 获得总的毫秒数
console.log(Date.now());
运行截图为:
注意:时间一直在不断的变化 这四个值有时可能不同是因为程序执行也要时间
二、倒计时案例
算法思想 用结束时间减现在时间等于倒计时时间
用毫秒数相减 就不会出现 11.02-10.50 负数的情况
最后再把毫秒数转化为 天时分秒
毫秒要先除以1000转化为秒
秒/60=分/60=时/24=天
因为可能除出来是小数
所以用到了%给它取余 取整
具体代码实现:
function countdown(time) {
var nowtime = +new Date(); // +new Date() 返回的就是现在时间总的毫秒数
var deadline = +new Date(time); //返回的是用户输入的时间总的毫秒数
var count = (deadline - nowtime) / 1000; //count 就是剩余时间总的秒数
//parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数 要被解析的值。
//如果参数不是一个字符串,则将其转换为字符串
var day = parseInt(count / 60 / 60 / 24); //把秒数转化成天数
var hours = parseInt(count / 60 / 60 % 24); //转化成小时
//能被24整除的就是0点整 不能整除的取余数就是几点整
hours = hours > 9 ? hours : '0' + hours; //三目运算符 如果hours>9就执行 hours 否则执行 '0'+hours
//加上三目运算符的目的是 把时间输出成 08 01 这种情况
var minutes = parseInt(count / 60 % 60); //分
minutes = minutes > 9 ? minutes : '0' + minutes;
var seconds = parseInt(count % 60); //秒
seconds = seconds > 9 ? seconds : '0' + seconds;
var a = '倒计时:' + day + '天' + hours + '小时' + minutes + '分' + seconds + '秒';
console.log(a);
}
countdown('2022-5-8 21:00:00'); //这里是结束时间 需要用户自己输入
当前时间:
结束时间
2022-5-8 21:00:00
代码运行结果:
倒计时: