日期时间对象

153 阅读7分钟

日期时间对象的声明

使用new关键词调用Date构造
//不传参
var date=new Date()//获取当前的本地时间
console.log(date)//以相关格式显示的本地时间
//传入一个字符串作为参数
var date=new Date'2010/5/20 10:10:10 '//以对应的日期时间显示格式来传入字符  进行解析
//能解析的情况会将当前的传入的日期格式的内容做为时间传入
console.lognew Date'2010年10月10日 10时10分10秒'))   //Invalid Date
//传入一个数字作为传输 传入其实是毫秒值 距离1970年1月10日 00:00:00的毫秒值
console.lognew Date1000*60*60*24)) //1970 1月2日 8点
//超过会自动向上递增
console.lognew Date2000,13,40,1,1,70))//2001三月 12日 1点02分10秒

主要方法

获取日期时间(get开头)
  • getFullyear 获取年 (完整年)
  • getMonth 获取月份(0-11 0表示1月)
  • getDate 获取一个月的第几天(1-31)
  • getDay 获取一个星期第几天(0-6 星期天为0)
  • getHours 获取小时
  • getMinutes 获取分钟
  • getSeconds 获取秒钟
  • getMilliseconds 获取毫秒值
  • getTime 获取离格林兰治时间的毫秒值
  • getTimezoneOffset 获取时区偏移
  • 相关utc方法 (UTC 国际标准时间)
  • getUTCFullYear (国际标准年)
  • .....
设置日期时间 (set开头 超过会自动向上递增)
  • seFullYear 设置年
  • setMonth 设置月份
  • setDate 设置一个月的第几天 (1-31)
  • setDay设置一个星期第几天(0-6 星期天为0)
  • setHours 设置小时
  • setMinutes 设置分钟
  • setSeconds 设置秒钟
  • setMilliseconds 设置毫秒值
  • setTime 设置离格林兰治时间的毫秒值
  • 相关utc方法 (UTC 国际标准时间)
  • setUTCFullYear (国际标准年)
  • .....

相关转字符串方法

  • toString 转字符串
  • toDateString 将日期转为字符串
  • toTimeString 将时间转为字符串
  • toLocaleString 根据本地格式转为字符串
  • toLocaleTimeString 根据本地格式将时间转为字符串
  • toLcaleDateString 根据本地格式将日期转为字符串
  • toUTCString/toGMTString 将当前时间按照UTC的格式转为字符串
  • toISOString 将当前时间按照ISO(构建标准)的格式转为字符串

静态方法及属性

属性(继承于Fucntion)
  • length 函数的形参个数
  • name 函数的名字
方法

UTC传入对应的日期时间返回离格林拉治时间的毫秒值(按照00:00:00) now获取当前时间离格林兰治时间的毫秒值 parse 传入一个日期时间字符串 返回离格林兰治时间的毫秒值

日期时间对象的特性

他可以进行计算 ((-/%*)自动转换为number的毫秒值)

var now = new Date(100000000001)
var old = new Date(100000000000)
console.log(now - old)//1
console.log(now + old) //字符串连接
练习

封装一个函数计算传入的日期 计算离当前日期的时间(以年 天 时 分 秒显示)

function reduceTime(date){
//计算传入日期和当前日期的差
var resultMs=Math.absDate.now()-date)
//以年日分秒显示
var year =parseInt(resultMs/1000/60/60/24/365var day =parseInt(resultMs/1000/60/60/24%365var hours=parseInt(resultMs/1000/60/60/%24var mitues=parseInt(resultMs/1000%60console.log(`${year}${day}${hours}${mintues}${seconds}秒`)}
//调用
reduceTime(new Date'2012/10/10 12:12:12'))
}

求2000年最后一个星期天是哪天

function getLastSunday(year){
//构建日期对象 下一年的第一天
var time = new Date(year+1,0)
//一直向下减一天得到星期天退出
while(true){
time.setDate(time.getDate()-1)
//判断是否为星期天
if(time.getDay()==0){
return time
}
}
}
console.log(getLastSunday(2000).toLocaleString())

计算当前时间距离2008/8/8 年过去了多少天

function getDiffDay(date){
//得到差距的毫秒值
var ms = Math.abs(Date.now() - date)
//转为天
var day = parseInt(ms/1000/60/60/24)
console.log(day)
}
getDiffDay(new Date('2008/8/8'))

计算当前离过年还要多少天 输入你的出生日期 假设你能活100岁 打印你的离开世界的日期

function setHundredForYear(birthday){
birthday.setFullYear(birthday.getFullYear()+100)
console.log(birthday.toLocaleString())
}
setHundredForYear(new Date('2001/1/1'))

计算当前离1月1日过去了多少个星期

function getWeekToDate(){
var now = new Date()
var firstDay = new Date(now.getFullYear(),0)
//计算差值的毫秒值
var ms = now - firstDay
//获取当前的时间为星期几 排除这个星期
ms -= now.getDay()*1000*60*60*24
//计算对应的星期个数
var week = Math.ceil(ms/1000/60/60/24/7)
//表示当前年份1月1日如果为星期天这个星期就不排除 如果不是就排除
if(firstDay.getDay!=0){
week--
}
console.log(week)
}
getWeekToDate()

第三方js库

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

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

在jacaScript 中解析,效验,操作,显示日期和时间的js库

重点方法

moment 产生一个moment对象

moment相关方法
  • format 格式化 (Y年 M月h表示小时 m表示分钟s表示秒钟 d表示星期几)
  • fromNow 返回相对当前的时间
  • add 添加
  • subtract 减少
  • startOf 什么时候开始的
  • endOf 什么时候结束的
  • calendar 日历方法
//格式化日期
// YY 表示年 M 表示月 D表示日期 d表示星期 h表示小时 m表示分钟 s表示秒
console.log(moment().format('YY年MM月DD日 hh时mm分ss秒'))
console.log(moment().format('MMMM Do YYYY, h:mm:ss a')); // 六月 25日 2023,
5:11:19 下午
console.log(moment().format('dddd')); // 星期日
console.log(moment().format("MMM Do YY")); // 6月 25日 23
console.log(moment().format('YYYY [escaped] YYYY')); // 2023 escaped 2023
console.log(moment().format());
//相当当前时间 moment可以传入对应的字符来识别 (传入格式)一个日期时间 不传参获取当前的时间
console.log(moment("2011-10-31", "YYYY-MM-DD").fromNow())
console.log(moment("2011-10-31", "YYYY-MM-DD").format())
//format 进行格式化 返回一个字符串
//fromNow 相当当前的时间的距离 返回字符串
//calendar 日历查看
console.log( moment().calendar())

全局方法 (global全局)

定时器(setinterval)定时执行 (无限循环执行 需要手动清除)

基础使用
setInterval (执行代码块(可以是字符串可以是函数),间隔时间(毫秒值),传递的参数(传递给执行的函数的参数))
示例
打印数值
var i = 1
setInterval(function(arg){
console.log(i,arg) //arg会接收到第三个参数传递的10
i++
},1000,10)

从1数到100

//从1数到100
var id = setInterval(function(){
console.log(i)
i++
//到100的时候停止 清除定时器
if(i>100){
clearInterval(id)
}
},10)

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

清除定时器 clearInterval

//清除定时器 里面传入定时器的标识id 这个id是一个数值
clearInterval(timer) //同步(队列) 同步比异步先执行 异步(多个队列) js引擎只有一个

延时器(setTimeout)延时执行(只执行一次) 延时器和定时器使用一致 只会执行一次

var timer = setTimeout(function (arg) {
console.log(arg)
//延时器一般也要清除
clearTimeout(timer)
}, 1000, '你好')

clearTimeout清除延时器

clearTimeout(延时器id)

js引擎 执行顺序

  • 定时器和延时器都是异步的,js引擎优先处理同步内容
  • js引擎和gui渲染线程是互斥的(不能同步执行)