日期对象和对象及定时器

204 阅读6分钟

日期对象

日期对象就是用于描述对应的日期时间的对象。Date日期事件对象主要有的操作是设置时间和获取时间

声明

new关键词声明的注意事项
  • 使用new关键词构造的都是对象(引用数据类型)
  • new关键词后面接的是对应的构造函数
  • 构造函数就是用于构造对象的函数(大写字母开头)
使用无参构造说明

var date = new Date() console.log(date)

传入一个数值(毫秒值)
有参构造  
传入一个数值  (他会认为是毫秒值 将这个毫秒值转换为当前的时间  加上初始时间 (格陵兰治时间 1970/1/1 00:00:00))
var  date = new Date("2013/12/10 10:10:10")
console.log(date)
传入一个字符串(对应格式的字符串)

传入一个字符串 它会认为是对应的显示格式 (y表示年 m表示月 d表示天 h表示小时 M表示分钟 S表示 秒钟)

传入多个数值(根据年月日时分秒的顺序)

传入多个数值(最少两个) 年 月 日 时 分 秒 传入一个字符串的时候如果格式不对或者超出就会出现NaNInvalid Date 如果对应的在初始化时间的时候 传入的值超出了范围 他会默认为向上+1

注意事项
  • 如果传入的是多个参数的数值,那么对应的月份取值为0-11,超出范围会自动向上进1
  • 如果传入的是字符串,那么格式必须按照要求来,如果格式不正确或对应的超出范围那么就会显示为Invalid Date
  • 如果传入一个数值,那么他会认为是毫秒值,会在1970年1月1日0时0分0秒的基础上加上这个毫秒值
  • 如果是无参构造 那么获取本地的显示时间
日期对象的方法
  1. 获取日期时间(get)
  2. getFullYear 获取年
  3. getMonth 获取月
  4. getDay 获取星期几
  5. getDate 第几天
  6. getHours 获取小时
  7. getMinutes 获取分钟
  8. getSeconds 获取秒钟
  9. getMilliseconds 获取毫秒值
  10. getTime 获取时间戳
  11. getTimezoneOffset 获取时区的偏移分钟
  12. getUTCHours 获取utc的相关小时
设置日期对象(set)
  1. setFullYear 设置年
  2. setMoth 设置月
  3. setDate 设置天
  4. setHours 设置小时
  5. setMinutes 设置分钟
  6. setSeconds 设置秒钟
  7. setMilliseconds 设置毫秒值
  8. setTime 设置离格陵兰治时间的毫秒值
  9. setUTCHours 设置utc的小时
转义字符串的相关方法
  1. toString 转为字符串
  2. toLocalString 转为本地格式的字符串
  3. toDateString 将对应的日期转为字符串
  4. toTimeString 将对应的时间转为字符串
  5. toLocaleDateString 将对应的日期转为本地格式的字符串
  6. toLocaleTimeString 将对应的时间转为本地格式的字符串
  7. toISOString 以-进行连接格式的字符串
  8. toUTCString 转为utc时间字符串
  9. toJSON 利用JSON.stringify方法来进行转换
静态方法
属性
 // length  函数的形参个数
  console.log(Date.length)
  // name  函数的名字
  console.log(Date.name)
方法
  // UTC 传入对应的日期时间返回离格林兰治时间的毫秒值
  console.log(Date.UTC(2000,10))
  // now  获取当前时间离格林兰治的毫秒值
  console.log(Date.now())
  // parse  传入一个日期时间字符串  返回离格林兰治的毫秒值
  console.log(Date.parse('1990/1/2 00:00:01'))
  console.log(Date.parse('nnm你好'))

  Date.now()获取当前时间的时间戳

  Date.parse()传入字符串返回时间戳
注意事项

两个日期比较的时候或者运算的时候会自动转为对应的时间戳

第三方js库

第三方js库(相当于别人封装好的js内容,你只要调用就好了)

moment.js 专门用于操作对应的日期时间的js库

概述

在JavaScript中解析。校验、操作、显示日期和时间的js库

monment产生一个moment对象

 // YY表示年  M表示月 D表示日期  d表示星期  h表示小时  m表示分钟  s表示秒
// 格式化日期
console.log(moment().format('yyyy'))
console.log(moment().format('yyyy年MM月DD日 hh:mm:ss a'))

// 相对日期
console.log(moment("20120409","YYYYMMDD").fromNow())//11年以前
console.log(moment().startOf('day').fromNow())//18小时以前
console.log(moment().endOf('day').fromNow())//6小时以后

// 多语言环境支持
console.log(moment.locale())

moment相关方法

  • format格式化 (Y年M月D天h表示小时m表示分钟 s表示秒钟d表示星期几)
  • fromNow返回相对当前的时间
  • add添加
  • subtract减少
  • startOf什么时候开始的
  • endof什么时候结束
  • calendar日历方法
定时器 setInterval 定时执行 无限循环执行 需要手动消除
1数到100
// var i = 1
// var time = setInterval(function(){
//   console.log(i)
//   i++
//   if(i==100){
//     clearInterval(time)
//   }
// },10)

定时器必须关闭不然会一直占用内存(内存泄漏(一个内存空间一直占用没有得到释放而这个空间又没有被使用)))

清除定时器

清除定时器里面传入定时器的标识id这个id是一个数值

clearInterval(time) 同步(队列) 同步比异步先执行﹐异步(多个队列) js引擎只有一个

延时器 setTimeout 延时执行 只执行一次
var time = setTimeout(function(arg){
    console.log(arg)
      clearTimeout(time)
    },100,'你好')
    
js引擎执行顺序
  • 定时器和延时器都是异步的,js引擎优先处理同步内容
  • js引擎和gui渲染线程是互斥的(不能同时执行)

对象

  1. 对象其实就是一个应用数据类型的容器,主要存储在堆中,所有被new的都是对象。所有的应用数据类型都是对象类型(万物皆对象)

  2. 对象中的数据存储为key:value(键值对)

对象的声明

字面量声明

var obj={}没有内容的对象
var obj={name:"jack"}有内容的对象

new关键词声明

var obj = new Obiect()
对象内容的存储及访问

对象中是以key:value进行存储 访问通过key来访问value

内容存储的形式
var obj = {name:'rose'} //key为name value为rose
//访问通过key来访问value
//对象名\[key的字符串]
console.log(obj\['name']) //访问key为name的值 rose
//通过对象名.对象的key来访问
console.log(obj.name) //访问key为name的值 rose
//给对象中的属性进行赋值操作也是对应的添加存储的方式
obj.age = 18 //添加了一个age的属性 它的值为18
obj\['sex'] = '女' //添加一个sex的属性 它的值为女

对象中内容的访问

  • 通过对象名key的字符串访问
  • 通过对象名key访问