个人简介
- 作者简介:大家好,我是阿牛,全栈领域新星创作者。
- 个人主页:馆主阿牛
- 支持我:点赞+收藏??+留言
- 系列专栏:硬泡 javascript
- 格言:迄今所有人生都大写着失败,但不妨碍我继续向前!
文章图片
上期传送门:【硬泡|javascript 内置对象Date总结及案例】
初识 JavaScript(揭开javascript的神秘面纱)
javascript中的数据类型
javascript中的数据类型转换
javascript 基础案例(循环)
面试官最爱考的 javascript 预解析,你搞明白了吗?
“撩过”c++的对象,“拿捏”了python的对象,你还怕拿不下javascript的对象吗?
javascript 内置对象Math总结及其案例
目录
-
- 个人简介
- 前言
-
- Date的基本使用
- 格式化时间
- 获取Date总的毫秒数(时间戳)
-
- 案例-网页倒计时核心算法(重要)
- 结语
前言 今天总结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);
文章图片
格式化时间
可以从上图看到返回的时间格式 Sun May 06 2018 00:00:00 GMT+0800 (中国标准时间) 不符合我们中国人的表示习惯
所以我们需要获取日期的指定部分,然后进行日期格式化。
方法名 | 说明 | 代码 |
---|---|---|
getFullYear() | 获取当年 | Obj.getFullYear() |
getMonth() | 获取当月,返回0 -11 | Obj.getMonth() |
getDate() | 获取当天日期 | Obj.getDate() |
getDay() | 获取星期几(周日0 到 周六6) | Obj.getDay() |
getHours() | 获取当前小时 | Obj.getHours() |
getMinutes() | 获取当前分钟 | Obj.getMinutes() |
getSeconds() | 获取当前秒钟 | Obj.getSeconds() |
//格式化日期- 年,月,日
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]);
文章图片
2.格式化时,分,秒
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'));
文章图片
结语 你学废了吗?关注本专栏,持续更新中···
推荐阅读
- 硬泡|解锁前端密码框常见功能做法
- JavaScript|JavaScript性能优化方案,你知道几个()
- JavaScript排他思想案例
- 硬泡|四行js代码让别人无法复制你的网站文字,八行程序员都哭了
- 硬泡|前端实现动态生成表格,是蒸的C
- 前端面试题|JS前端面试题(一)
- 前端面试|【1.1w字】面试常问Javascript 事件循环、同步异步、宏微任务,彻底明白原来这么简单
- react.js|props基本使用React
- javascript|JavaScript理论题(一)