day 07日期+对象+定时器
day 07日期+对象+定时器
日期对象
概述:date是用于表示日期时间的对象,他里面的主要方法是用于获取日期时间和设置日期时间。
1.Date ()日期对象,是一个构造函数 ,必须使用new来调用我们创建的日期对象
var arr = new Array();//创建一个数组对象
var obj = new Object();//创建一个对象实例
2.使用Date如果没有参数,返回系统当前的时间
3.参数常用的写法:数字型 2019, 10 ,1
字符串型 ‘ 2019-10-1 8:8:8’
var date1 = new Date(2019, 10 ,1 )//返回的是11月 不是10月
console.log(date1)
var date2 = new Date(‘ 2019-10-1 8:8:8’ )
console.log(date2)
4.Date()方法的使用
1.获取当前时间必须实例化
var now = new Date();
console.log(now);
2.Date()构造函数的参数
如果括号里面有时间,就返回参数里面的时间。例如日期格式字符串为‘2022-10-8’,就可以写成new Date(‘2022-10-8’)或者new Date(‘2022/10/8’)
5.格式化日期 年 月 日
var date = new Date();
console.log(date.getFullYear());//返回当前日期的年
console.log(date.getMonth()+1);//月份 返回的月份小1个月 记得+1
console.log(date.getDate())//返回的是几号
console.log(date.getDay)周一返回的是1 周六返回的是6 但是周日返回的是0
案例:输出2022年 10月8日 星期六
var year = date.getFullYear();
var month = date.getMonth();
var dates = date.getDate();
var arr=['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
var day= date.getDay();
console.log(year+'年'+month+'月'+dates+'日'+arr[day])
格式化 日期 时 分 秒
var date = new Date();
console.log(date.getHours());//时
console.log(date.getMinutes());//分
console.log(date.getSeconds());//秒
案例:要求封装一个函数返回当前的时分秒 格式 08:08:08
function getTimer(){
var time = new Date()
var h = time.getHours();
h=h<10?h+'0':h
var h = time.getMinutes();
m=m<10?m+'0':m
var s = time.getSeconds();
s=s<10?s+'0':s
}
console.log(getTimer())
获得Date总的毫秒数(时间戳) 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数
1.通过valueOf()getTime()
var date = new Date()
console.log(date.valueOf())
console.log(date.getTime())
2.简单的写法(最常用的写法)
var date1 =+new Date();//+new Date();返回的就是总的毫秒数
3.H5新增的获得总的毫秒数
console.log(Date.now());
6.倒计时
function countDown(time){
var nowTime= +new Date();
var inputTime = +new Date(time);
var times = (inputTime-nowTime)/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(countDown('2022-10-8 10:00:00'))
var date = new Date();
console.log(date)
7.日期的比较和计算
日期在对应的比较和计算中会自动变成number类型的毫秒值(离格林兰治时间的毫秒值)
//date的计算
var date = new Date()
var date1 = new Date('2022/10/1 11:41:00')
console.log(date-date1);//变成number类型
console.log(date+date1);//不会变成number
console.log(date>date1);//true
8.设置对应的日期时间 (set开头)
//设置相关得方法
var date = new Date()
//设置年份
date.setFullYear(2022)
//设置对应得月份
date.setMonth(11)//设置为12月
date.setMonth(13)//自动往递进 当前设置为2月 对应的年份就会往上加1
//设置对应的天数
date.setDate(39) //设置当月的第几天 超过当前月份的天数会自动向上递进 月份会+1
//设置对应的小时 最大为23 超过23 自动向上递进 天数会+1
date.setHours(30)
//设置相关分钟 向上递进 0-59 小时会+1
date.setMinutes(59)
//设置秒钟 跟分钟一样
date.setSeconds(59)
//设置毫秒值 0-999 向上递进
date.setMilliseconds(999)
console.log(date);
//根据对应的毫秒值设置对应的时间
date.setTime(1000)
console.log(date);
//设置对应的utc时间
date.setUTCDate(10)
console.log(date);
辅助相关方法 转为对应的string
console.log(date.toDateString());//将对应的日期转换string返回
console.log(date.toTimeString());//将对应的时间转换string返回
console.log(date.toLocaleString());//根据本地的格式 转为对应的字符串返回
console.log(date.toLocaleDateString());//根据本地的格式 将日期转为对应的字符串返回
console.log(date.toLocaleTimeString());//根据本地的格式 将时间转为对应的字符串返回
对象
概述:对象是一种引用数据类型。他可以存储对应的数据相关的方法(可以拥有相关的属性及对应的函
数(行为))。对象里面构成是用key:value(键值对)构成的,一个对应的key对应一个value(key
不能重复的 value是可以重复的)。
对象的声明
使用字面量 {}
var obj = {
name:
'
jack',//对应的key是name value是jack 多个键值对使用,隔开
age:18
}
使用new关键词 Object (Object是所有的类和对象的父类 也就是Object是最大的对象)
var obj = new Object()
obj.name = 'jack'
obj.age = 18
对象的属性及相关的方法访问(查询)
使用对象名.属性名
使用对象名[属性名字符串]
对比的相关注意事项
关于对象属性的增删改的相关操作
增 (就是使用对象名.属性名进行赋值)
修改 (跟对应的增加操作一致 如果当前属性本身已经具备那么重新赋值就是修改)
删除 (使用delete关键词)
this
概述:this是一个特殊的对象,他类似于一个指针会指向对应的对象。(在对象的函数内那么对应的
this就指向这个对象,在外面的函数内this就指向最顶层的对象window)。this指向当前调用者
所有的全局变量及全局声明的函数都是属于window的(window可以被省略)
var obj = {
name:
'
jack',//对应的key是name value是jack 多个键值对使用,隔开
age:18,
sayHello:function(){
console.log('hello')
}
}
console.log(obj['name']) //jack
console.log(obj['age']) //18
//调用sayHello方法
obj.sayHello()
//对象在比对的时候比对是对应的地址
console.log({}=={});//false
var obj = {}
obj.sex = '男' //给对应的obj添加一个属性名字为sex
var obj = {
age:18
}
obj.age = 20 //当前属性已经存在重新赋值就是修改
//删除对应得属性 使用delete关键词
delete obj.sex //删除对应obj的sex属性
console.log(obj); //{age:18}
var person = new Object()
person.name ='jack'
person.age = 30
person.like = '泡澡'
person.money = 10000
定时器和延时器
概述:属于window的俩个方法,定时器和延时器是属于异步的行为,按照对应文档流顺序走的代码称
为同步代码(他只有一个任务队列),异步代码不按照对应的文档流执行(他会重新开辟一个异步线
程),你是没有办法知道他什么时候走完。同步代码比异步代码先执行。定时器是定时器执行的(执行
多次),延时器是延时执行(执行一次)。
同步和异步
定时器 setInterval(做动画)
//第一个参数是执行的函数 第二个对应定时的时间(毫秒值) 第三个传递给对应函数的参数
setInterval(handlerFunction,time,arg)
第一种写法(传递匿名函数)
setInterval(function(params){
console.log(params)
},1000,'hello')
第二种写法 (传递具名函数)
function fn(params){
console.log('hi'+params);
}
//第二种方式 传递具名函数
setInterval(fn,1000,'jack')
第三种方式 (传递字符串 在字符串里面写代码 不推荐)
setInterval('console.log("hello")',1000)
清除定时器 用于停止对应的定时器操作
延时器 setTimeout (对应的等待)
概述:延时器时延迟执行 只执行一次 (用法和对应的setInterval一样的)
clearInterval(对应的定时器id)//这个id就是对应的setInterval返回的number值
var timer = setInterval(function(){
console.log('hello')
},1000)
//清除对应的定时器
clearInterval(timer)
setTimeout(hanlderFunction,delay,arg)
//执行一次就结束 内存并不会释放
var id = setTimeout(function(){
console.log('三秒后执行');
//清除延时器
clearTimeout(id)
},3000)