day08
一、日期类
定义
Date 日期 UTC 国际协调时间 从1970年1月1日0时0分开始算 可以精确到之前或之后的 285616年
第一种 定义日期
var date = new Date()
console.log(date)
第二种 指定一个日期(可以是字符串也可以是number)
var date1 = new Date("2022-03-23T06:38:25.983Z")
console.log(date1)
方法
关于日期的获取和设置
获取以get开头 设置以set开头
get方法
- 获取当前的时间(年月日都有)
var currentDate = new Date()
- 获取当前本地时间的年份
console.log(currentDate.getFullYear())
- 获取当前的月份0-11(1月就是0 12月是11)
console.log(currentDate.getMonth())
- 获取日
//获取当月的第几天
console.log(currenDate.getDate())
//星期的第几日 星期天是第一天(从0开始算)
console.log(currentDate.getDay())
- 获取时
24小时制 12点就是12 24点就是0
console.log(currentDate.getHours())
- 获取分
console.log(currentDate.getMinutes())
- 获取秒
console.log(currentDate.getSeconds())
-
加了utc就是获取utc时间,没有加就是获取本地时间
获取距离1970年1月1日0时0分0毫秒
一般称为时间戳 这个一般作为唯一标识(有些时候数据过大我们还会再后面加随机数)
console.log(currentDate.getTime())
- getTime(获取的时离1970年1月1日0时0分0秒的毫秒值)
var date = new Date()
console.log(date.getTime())
- getMillseconds()获取毫秒位的毫秒 不可大于等于1000
console.log(date.getMilliseconds())
- toDateString()把对应的日期(年月日)按照对应的格式转换String类型(指定好的无法更改)
date.toDateString()
- local本地
date.tolocaleDateDateString()
- utc时间格式
date.toUTCString()
date.getTimezoneOffset()//返回市区范围
set方法
Date是可变的
- 设置当月的第几天
console.log(currenDate.setDate(30))
- 设置当前的月份
console.log(currenDate.setMonth(9))//十月
- 和get方法差不多其余自己查
二、对象
对象是一种引用数据类型(Array Date都是对象)
对象也是一个容器 里面可以存储对应的属性
定义
- 第一种定义对象 使用new关键词定义
var obj = new Object()//obj就是一个对象 但是这个对象是没有具备任何属性的对象
指定属性存储
对象名.属性名 =值
obj.name = '张三'//将张三赋值给obj的name属性
obj.age = 18//将18赋值给obj的age属性
console.log(obj)
- 第二种方式使用字面量
var obj1 = {
name:'李四',//在{}里面使用 键:值
age:19
}//{}表示的是对象的字面值 这里面的对象存储是以键值对的形式 键:值 多个键值对之间使用,隔开
console.log(obj1)
- 获取对象的属性值 对象名.属性名
console.log(obj.name)
console.log(obj1.name)
-
对象数组 他是一个数组里面存放的是对象
数组对象 里面没有对象的就是数组对象,数组本身就是一个对象
核心区别:里面存放的数据是否是对象 是对象就是对象数组 不是对象就是数组对象(普通数组都是数组对象)
键值对是存在于{}中的 其他地方不能书写
var arr = []//数组对象 里面存放的不是对象
var objArr = [{
name:'王五'
age:11
},{
name:'雷六'
age:12
}]//对象数组 里面存放的是对象
访问使用
关于对象数组的访问 外层是访问数组里面层是访问对象
console.log(objArr[0].name)//取出王五
例子:
var obj1 = {
users:[
{
name:'1'
},{
name:'2'
},{
name:'3'
}
]
}
//怎么访问到2
console.log(obj1.users[1].name)
还可以使用对象名[属性名] 属性名必须是字符串 来访问对应对象的属性
var a = new Object()
a.name = '张三'
console.log(a['name'])
//对象里面可以存放各种数据类型
var objA = {
name:'张三'
age:19
isEat:true
run:function(){
console.log("我在跑步")
}
}
//调用对象的方法
objA.run()
//使用delete关键词删除属性
delete objA['age']//删除objA的age属性
delete objA.isEat//删除objA的isEat属性
三、setInterval定时器
定义
在一定时间内执行一次 循环执行 不会停的
第一个参数实质性的方法 可以传入function 也可以传入function的名字
第二个参数是执行一次的时间 为毫秒值
第三个参数为参数数组(不用写)
setInterval(function(){
console.log('helloWorld')
},1000)//1000的意思就是1秒中执行1次 定时器不会自动停止
一般会在内部关闭对应的定时器 来防止他死循环
var i = 0
var id = setInterval(function(){
i++
console.log('helloWorld')
if(i == 10){
//清除定时器 传入的值为你需要清除定时器的id
//当你的i值为10的时候,自动清除你的定时器
clearInterval(id)
}
},1000)//1000的意思就是1秒中执行1次 定时器不会自动停止
//一般用来做一些动画
var i = 0
var fn = function(){
i++
document.write(i)
if(i >10){
clearInterval(interval)
}
}
//同步机制 必须等待上一个操作完成 才能执行下一个操作(按照一个流程走)
//异步机制 就是不管上一个有没有执行完都会执行(多个流程同时进行)
//因为setInterval是异步的 不会管你的其他的运行有没有运行完我照样运行(不遵从顺序流)
var interval = setInterval(fn,500)
//这样子也是可以的
//var interval = setInterval('fn()',500)
例子
//var interval = setInterval('fn()',1000)
var input = document.getElementById('input')
var j = 100
var inter = setInterval (function(){
j--
if(j < 0){
alert('你吃了吗')
clearInterval(inter)
}
input.value = j
},200)
四、setTimeout
执行一次 延迟执行 第一个参数必须是function 也异步的
var i = 0
setTimeout(function(){
i++
console.log(i)
},2000)
setInterval和setTimeout的区别
前者执行多次
后者执行一次