前言
今天总结javascript中Date的使用,并且写一个重要的网页倒计时的核心算法案例。
Date的基本使用
内置对象Date是构造函数,用new创建对象,无参数时返回当前时间,可加参数返回特定时间
//内置对象Date是构造函数,用new创建对象,无参数时返回当前时间,可加参数返回特定时间 var now_time = new Date(); console.log(now_time); // 年月日之间可以用-或者/ var time_1 = new Date('2018-05-06 12:36:15'); var time_2 = new Date('2018/05/06'); console.log(time_1); console.log(time_2);
//格式化日期- 年,月,日 var date = new Date(); // 实例化一个日期对象 var year = date.getFullYear(); // 返回当前日期年份 var month = date.getMonth() + 1; //返回的是0-11,分别对应1-12月,所以接果+1才是正确的月数 year = year < 10? '0' + year: year ; var dates = date.getDate(); // 返回几号 dates = dates < 10? '0' + dates: dates ; var day = date.getDay(); //返回的是0-6,分别对应星期天-星期六 var day_arr = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六',] console.log('今天是:'+ year + '年' + month + '月' + dates + '日' + day_arr[day]);
function getTime(){ var time = new Date(); var h = time.getHours(); h = h < 10? '0' + h: h; var m = time.getMinutes(); m = m < 10? '0' + m: m; var s = time.getSeconds(); s = s < 10? '0' + s: s; return h + ':' + m + ':' + s ; } console.log(getTime());
获取Date总的毫秒数(时间戳)
我们时常可以看到时间戳,那么他是怎么来的呢?
其实时间戳表示的是从1970年1月1号到当前时间的总的毫秒数。
至于为什么是1970年的这个时间,感兴趣的可以百度看看,十分有趣。
在我们javascript中获取时间戳有三种方法。
//获取Date总的毫秒数(时间戳) ,是从1970年1月1号到当前的总的毫秒数 至于为什么是这个时间,感兴趣的可以百度看看,十分有趣 //1.通过 valueOf() 或者 getTime() 方法 var date = new Date(); console.log(date.valueOf()); //得到的是我们当前时间距离1970 1.1的总的毫秒数 console.log(date.getTime()); //2.简单的写法(最常用的写法) var date = +new Date(); console.log(date); //3.H5 新增的,ie9以下不适用 console.log(Date.now());
案例-网页倒计时核心算法(重要)
1)核心算法:输入的时间减去现在的时问就是利余的时问,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的。
2)用时间载来做。用户输入时间总的老秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
3)把剩余时间总的毫秒数化为秒然后转换为天、时、分、秒(时间转换为时分秒)
转换公式下:
d = parselnt (总秒数/60/60/24); 计算天数
h = parselnt (总秒数/60/60%24); 计算小时
m = parselnt (总秒数/60%60); 计算分数
s = parselnt (总秒数%60); 计算当前秒数
//网页倒计时核心算法 function countTime(time){ var newTime = +new Date(); //获取当前总的毫秒数(时间戳) var inputTime = +new Date(time); // 得到指定时间的时间戳 var times = (inputTime - newTime) / 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(countTime('2022-03-01 18:00:00'));