本文章将会讲解JavaScript里面的时间对象,在讲解中配合案例来加深大家的理解。
时间对象可以用来创建时间,可以获取电脑本地的时间,可以计算时间差。
目录
创建时间
使用Date()构造函数
var d = new Date()
console.log(d);
打印结果:
打印出来的,是现在的时间.Wed Oct 26 2022 09:01:40 GMT+0800 (GMT+08:00) (中国标准时间)
所以我们可以使用new Date()来获取现在的时间。
案例:获取年月日
在使用new Date()后,我们可以分别使用getFullYear()获取当前年份,getMonth() + 1获得当前月份,.getDate()获得当前日期。
由于月份是由数组存储的,getMonth()返回的是数组下标,所以必须加一。
var d = new Date()
//年
var y=d.getFullYear()
console.log(y);//2022
//月
// [1,2,3,4,5,6,7,8,9,10]
var m=d.getMonth()+1
console.log(m);//10
//日
var r=d.getDate()
console.log(r);//26
案例: 获取时分秒
同上,getHours(),getMinutes(),getSeconds()可以获得当前的时分秒。
var d = new Date()
//时
var h = d.getHours()
console.log(h+"时");//9
//分
var f = d.getMinutes()
console.log(f+"分");//22
//秒
var s = d.getSeconds()
console.log(s+"秒");//52
案例:获取星期几
getDay()获取星期返回的是下标,我们先定义一个数组week,在数组内写好内容。在打印的时候,打印数组内对应的下标内容就可以了。
注意:一周的开始是周天,获取星期返回的同样是下标
//星期返回的是下标
var x = d.getDay()
var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
console.log(week[x]);
案例:电子时钟
结合上面几个案例,我们就可以把上面几个案例结合,输出年月日,时分秒和星期几。
只是把上面几个案例写在一起,并且一起输出,故不做赘述。
function timer() {
var time = new Date();
var year = time.getFullYear();
var month = time.getMonth() + 1;
var day = time.getDate();
var hour = time.getHours();
var minutes = time.getMinutes();
var seconds = time.getSeconds();
var x = time.getDay();
var week = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六",];
console.log(week[x]);
var str ="现在是" +year +"年" +month +"月" +day +"日" +hour +"时" + minutes +"分" +seconds + "秒" +week[x];
document.body.innerHTML = str;
return str;
}
console.log(timer());
时间戳
时间戳是从1970年1月1日早上8点开始算到现在(或某个时间)的毫秒数
创建创建戳
var d=new Date()
第一种书写方法:获取d的时间戳
console.log(d.getTime());
第二种书写方法,是获取现在的时间戳,这个方法在ie8以下的浏览器不可用
console.log(Date.now());
时间戳举例:
获取1970年1月1日,8点整的时间戳,和到现在的时间戳。
var d=new Date('1970/1/1 8:0:0')//正常传入,1970年1月1日,8点整
var d=new Date(1970,8,1,8,0,0)//月份-1,这个也是1970年1月1日8点整,与上面相同
//下面的d会覆盖上面的,但二者相同
console.log(d.getTime());//获取d的时间戳
console.log(Date.now());//获取现在的时间戳
由此可见,我们可以获得到某个时间的时间戳,也可以获得到现在的时间戳。
倒计时秒杀案例
在结合上面的案例后,我们可以做一个倒计时秒杀案例。
在双十一的时候我们经常看见各大电商的网页是都有倒计时秒杀,我们可以根据时间戳来做这个倒计时的效果。时间定在11月11号的0点,把11月11号0点的时间戳,减去现在的时间戳,获得一个差值,主要是把这个差值(毫秒),转化为天,小时,分钟和秒,这就是数学方面的问题了。
代码解释见注释。
function timer() {
var miao1 = setInterval(function () {
var con = document.getElementById('con')
var day11 = new Date('2022/11/11 0:0:0')//获取双十一的时间戳
var daynow = new Date()//获取现在的时间戳
var cha = day11 - daynow//获取二者的差值
cha = cha / 1000//将毫秒转换为秒
var day = parseInt(cha / 60 / 60 / 24);//天
day = day < 10 ? '0' + day : day;//小于10前面补零
var hour = parseInt(cha / 60 / 60 % 24);//时
hour = hour < 10 ? '0' + hour : hour;
var minute = parseInt(cha / 60 % 60);//分
minute = minute < 10 ? '0' + minute : minute;
var second = parseInt(cha % 60);//秒
second = second < 10 ? '0' + second : second;
con.innerHTML = '距离双十一还有' + day + '天' + hour + '小时' + minute + '分钟' + second + '秒'
if (res <= 0) {
// clearInterval(miao1)
con.innerHTML = '双十一开始啦,快来剁手啊!'
return//return截停代码
}
}, 1000)
}
console.log(timer())
console.log(timer())