时间对象
存储记录时间数据的.
1, 创建时间对象
通过构造函数创建时间对象
var 变量 = new date()
2, 时间对象的函数方法
- 获取 (时间对象.get…() )
通过JavaScript程序提供的函数方法. 获取时间对象中具体的时间数据.
获取时间对象中包含的时间数据
时间对象.getFullYear()
获取四位的年份
时间对象.getMonth()
获取月份
获取的结果是 0-11 的数字结果
对应的1-12的月份
需要获取的结果+1 对应月份
时间对象.getDate()
获取日期
时间对象.getDay()
获取星期
获取的结果是 0-6 的数字结果
对应的 星期日-星期六 的月份
可以设定一个星期的数组,存储从星期日到星期六, 通过数字结果获取对应的星期结果.
时间对象.getHours()
获取小时
时间对象.getUTCHours()
获取对应的世界标准时间的小时
时间对象.getMinutes()
获取分钟
时间对象.getseconds()
获取秒
-
设定: 时间对象.set…()
设定时间对象中的时间数据的具体数值时间对象.setFullYear() 设定四位的年份 时间对象.setMonth() 设定月份 设定的结果是 0-11 的数字结果 对应的1-12的月份 需要设定的结果+1 对应月份 时间对象.setDate() 设定日期 时间对象.setHours() 设定小时 时间对象.setUTCHours() 设定对应的世界标准时间的小时 时间对象.setMinutes() 设定分钟 时间对象.setSeconds() 设定秒 时间对象.setTime(time.getTime + 自己想要添加的时间 ) 设定时间戳
前导补零
数值小于10 , 数值前拼接’0’ 也就是’0’+数值
var 变量 = 获取结果<10 ? ‘0’+获取结果 : 获取结果本身;
//通过构造函数创建时间对象
var time = new Date();
//向控制台输出数据
console.log(time);
// Sat Jan 08 2022 14:15:12 GMT+0800 (中国标准时间)
// 星期 月 日期 年 时 分 秒 GMT+时差(时区)
// GMT世界标准世界 格林尼治时间, 中国是东八区 , GMT+8小时
// 向控制台输出属性属性值等
console.dir(time);
// 获取年份
var year1 = time.getFullYear();
console.log(year1);
// 获取月份
var month = (time.getMonth() + 1)<10 ? '0'+time.getMonth() + 1 : time.getMonth() + 1;
console.log(month);
//获取日期
var date = time.getDate()<10 ? '0'+time.getDate() :time.getDate();
console.log(date);
//获取星期
var weekArr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
var i = time.getDay();
console.log(weekArr[i]);
//获取小时
var hour = time.getHours()<10?'0'+ time.getHours(): time.getHours();
console.log(hour);
//获取分钟
var minute = time.getMinutes()<10?'0'+ time.getMinutes(): time.getMinutes ();
console.log(minute);
//获取秒
var second= time.getSeconds()<10?'0'+ time.getSeconds(): time.getSeconds ();
console.log(second);
时间对象的创建语法
通过构造函数创建时间对象
1, var 变量 = new Date();
没有参数, 默认创建当前时间的时间对象
2, var 变量 = new Date(参数);
设定参数, 创建指定时间的时间对象
参数的语法形式1: 字符串
'年-月-日 时:分:秒'
'年,月,日 时:分:秒'
'年 月 日 时:分:秒'
'年/月/日 时:分:秒'
字符串中数字必须符合时间数字范围 , 否则是无效的时间
参数的语法形式2: 6个数字
月份设定的数字是0-11 , 对应的月份是1-12, 0 对应 1月
数字格式中数字 可以超出正常值范围 , 可以进位
// 指定时间的时间对象
var time = new Date('2022-11-30 05:20:45');
console.log(time); // Wed Nov 30 2022 05:20:45 GMT+0800 (中国标准时间)
// 六个数字
// 月份数字设定是15 ,对应的是1年4个月 , 向年份单位进1 ,月份显示 4 月
var time1 = new Date(2022,15,1,12,30,45);
console.log(time1); // Sat Apr 01 2023 12:30:45 GMT+0800 (中国标准时间)
时间戳
距离1970年1月1日 0点0分0秒 的时间差 , JavaScript中时间戳的单位是毫秒 , 1秒 = 1000毫秒 .
一般使用时间戳计算时间差 , 之后将时间差转化为对应的 天 小时 分钟 秒 .
//获取时间戳
// 创建时间对象
var time = new Date();
// 获取时间戳 (获取的是当前时间的时间戳)
var t = time.getTime();
console.log(t);
<!--
当前时间距离 2022年1月21日16:00 倒计时
步骤:
1, 创建时间对象
起始时间: 当前时间
结束时间: 设定的时间
2, 计算时间差
结束时间的时间戳 - 起始时间的时间戳 (换算成秒)
3, 将时间差换算成 天 小时 分钟 秒
-->
<script>
//创建时间对象
var startTime = new Date();
var endTime = new Date('2022-1-21 16:00:00');
// 计算时间差(单位 : 秒)
var td = parseInt((endTime.getTime() - startTime.getTime()) /1000);
console.log(td);
// 天
var day = parseInt(td / (24*60*60));
// 小时
var hour = parseInt((td/60/60) % 12);
// 分钟
var minute = parseInt((td/60) %60);
//秒
var sec = parseInt(td%60);
console.log(`倒计时: ${day<10?'0' +day : day}天 ${hour<10?'0' + hour :hour}小时 ${minute<10?'0' + minute :minute}分钟 ${sec<10?'0' +sec : sec}秒`);
</script>
定时器 延时器 (1000毫秒 = 1秒)
-
定时器
按照设定的时间间隔 循环往复执行程序 , 也就是 按照设定的时间间隔 每间隔设定的时间 执行一次程序.( 时间间隔的单位是毫秒) , 也就是 按照间隔时间 一直重复执行程序 .语法: setInterval(参数1 , 参数2) 参数1 执行的函数程序 参数2 时间间隔
了解:
在最初的时间间隔内 没有执行程序 , 时间间隔的设定需要根据电脑的配置设定 , 60Hz 是 1秒刷新60次 , 刷新一次间隔是 16.6666…毫秒 , 所以一般最小值设定为20 毫秒 .
延时器
按照设定的时间间隔 延迟执行程序 , 也就是 按照间隔时间 延迟执行一次程序 .
语法:
setTimeout(参数1 , 参数2)
参数1 : 执行的函数程序
参数2 : 时间间隔
定时器延时器的参数1:
语法形式1: 匿名函数
语法形式2: 函数名称
参数1的语法形式称为 回调函数 callback
// 定时器
// 每间隔2000毫秒也就是2秒执行一次匿名函数中定义的程序
setInterval(function(){
console.log(300);
},2000);
// 是匿名函数
// 延时器
// 提前定义好的函数的函数名称
setTimeout(fun,5000);
function fun(){
console.log(40000000);
}
清除定时器 延时器
clearInterval(参数)
clearTimeout(参数)
这两个函数都是既可以清除定时器 ,也可以清除延时器
参数是定时器 或者 延时器的序号编号
定时器和延时器的函数程序的执行结果返回值就是定时器延时器的序号编号 , 定时器和延时器是公用一个序号编号 , 序号编号是顺延的.
异步程序 / 同步程序
JavaScript中 大部分的程序是同步程序 , 按照JavaScript代码程序执行的.
特殊的程序是异步程序(定时器, 延时器 , 事件的执行 , ajax , node js等) , 先执行所有的同步程序 , 等所有的同步程序都结束了, 再触发执行异步程序.
异步程序具体的执行过程
1, 先执行同步程序
2, 异步程序储存到异步池中
异步池就是内存中存储异步程序的存储空间
3, 同步程序都执行结束后触发执行异步程序
4, 异步程序池中的程序同时开始执行
时间间隔短的先触发执行
时间间隔长的后触发执行
时间间隔相同的按照顺序执行
核心:
1, 先执行同步程序 , 同步程序都结束才会触发异步程序.
2, 异步池中存储的所有异步程序都是同时触发执行的.