第十九章.日期对象
1. Date对象
Date是约会的意思是日期的意思。
Date是一个日期对象模型,和Math非常相似。
Date===window.Date;//true
typeof Date;//"function"
typeof Date();//"string"
//"Thu Jun 18 2020 23:00:58 GMT+0800 (中国标准时间)"
运行Date()返回一个日期的字符串表示:
周几 月份 日期 年 时:分:秒 时制+时区(补充)
- new Date()创建新的时间对象
let time = new Date();
typeof time;//"object"
new Date()的参数: 不写返回当前日期与时间
只有一个参数的时候。此参数表示从1970年1月1日 0:0:0到现在经过的毫秒数
let t = new Date(1539151802132);
//返回Wed Oct 10 2018 14:10:02 GMT+0800 (中国标准时间)的对象
可依照顺序传入年,月,日,时,分,秒。其中年写2位数,表示19xx年,通常4位数,月填写0表示一月11表示12月,大于12表示多加一年1,日从1开始超出减少同样影响月份。时是24进制,分和秒都是60进制
time = new Date(2018,10,10,22,10,66);
//返回Sat Nov 10 2018 22:11:06 GMT+0800 (中国标准时间)的对象
不同的时间或者单独的年/月/日都可以进行比较
2. Date对象API
API(Application Programming Interface)
Date对象的方法:参考http://www.runoob.com/jsref/jsref-obj-date.html
- valueOf 返回Date对象的原始值(等同于getTime)
let time = new Date(2018,10,10,22,10,66);
time.valueOf();//1541859066000
-
getDate 返回日期在当月的几号(1-31)
-
getDay 返回日期在本周的周几(0-6) 0是周天
-
getHours/getFullYear/getMonth/getMinutes/getSeconds 自行翻译理解
其中浏览器内部时间是东八区时间(北京)。可以在get和时间关键词中间添加UTC表示格林尼治时间。
-
getUTCHours/getUTCFullYear/getUTCMonth/getUTCDay/getUTCDate/getUTCMinutes/getUTCSeconds
设置日期:将前面的get换成set传入参数就可以了,注意参数的范围与类型
3. 倒计时的实现
通过定时器将获取日期时间,然后计算界限。
- 刷新获取当前时间
- 推算倒计时结束之后是多少时间(目标时间)
- 然后定时器获取时间与目标时间比较,如果当前时间大于目标时间则执行回调函数,并结束定时器。
- 时间戳
/*
* new Date()
* 可以来设置一个时间
* (现在,将来,过去)
* */
console.log(
new Date(2019, 8, 20, 20, 30, 0)
);
console.log(
new Date()
);
/*传入六个参数 年 月 日 时 分 秒*/
console.log(
new Date(2028, 8, 20, 20, 30, 0)
);
/* 传入三个参数 年 月 日 */
console.log(
new Date(2021, 0, 2)
);
/*传入两个参数 年 月*/
console.log(
new Date(2021, 0)
);
/*传入一个参数 毫秒数*/
console.log(
new Date(2021)
);
// console.log(new Date().toGMTString());
//把某个时间转换成 格林威治时间 对应的 字符串
console.log(new Date().toUTCString());
- 案例–时钟
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{margin:0;padding:0;font-family:"Microsoft Yahei";}
div{
font-size: 30px;
}
</style>
</head>
<body>
<div>
<span>00</span><b>:</b><span>00</span><b>:</b><span>00</span>
</div>
<script>
(function(){
let aSpan = document.querySelectorAll("span");
setInterval( ()=>{
let d = new Date(),
h = toTwo( d.getHours() ),
m = toTwo( d.getMinutes() ),
s = toTwo( d.getSeconds() )
;
aSpan[0].innerText = h;
aSpan[1].innerText = m;
aSpan[2].innerText = s;
} , 1000 );
function toTwo(num){
return (num<10?"0":"") + num
/*if(num<10){
return "0"+num;
}else{
return ""+num;
}*/
}
})();
</script>
</body>
</html>
- 注意
/*
* 日期对象很特殊
*
* 虽然是对象,但是可以做减法
* (两个日期对象 或者日期对象和数字 都可以做减法)
* */
let x = new Date();
console.log( x - 0 );//