JS之Date时间处理
初始化当前时间:
// 1. 使用构造函数方式 var newDate = new Date() // 2. 使用函数方式 var date = Date() // 返回的是一个Date对象 console.log(newDate) // 返回的是表示当前时间的字符串 console.log(date);
初始化指定时间:
通过Date对象初始化时间为指定的年月日可以将年、月、日、小时、分和秒等信息作为参数传递给 Date
var date1 = new Date(2021, 0) var date2 = new Date(2021, 0, 1) var date3 = new Date(2021, 0, 1, 0) var date4 = new Date(2021, 0, 1, 0, 0, 0, 0) console.log(date1) // Fri Jan 01 2021 00:00:00 GMT+0800 console.log(date2) // Fri Jan 01 2021 00:00:00 GMT+0800 console.log(date3) // Fri Jan 01 2021 00:00:00 GMT+0800 console.log(date4) // Fri Jan 01 2021 00:00:00 GMT+0800
初始化使用时间戳(毫秒级)
var date = new Date(0) console.log(date) // Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)
注: 一般用于时间戳到时间对象的转化,近而得到格式化后的时间
更多使用方式:
1.获取当前时间戳
console.log(Date.now()) // 1629085050614
2.解析时间字符串为时间戳
var date = Date() console.log(Date.parse(date)) // 1629085764000
3.获取UTC时间戳
console.log(Date.UTC(2021, 8, 16, 11, 58, 50)) // 1631793530000
Date对象方法:
获取时间
var date = new Date() // 获取日期 console.log(date.getDate()) // 16 // 获取今天周几 console.log(date.getDay()) // 1 // 获取哪年 console.log(date.getFullYear()) // 2021 // 获取时间戳 console.log(date.getTime()) // 1629093204493
设置时间
var date = new Date() console.log('当前时间: ' + date) // 当前时间: Mon Aug 16 2021 13:56:58 GMT+0800 (中国标准时间) date.setDate(24) console.log('修改后的时间: ' + date) // 修改后的时间: Tue Aug 24 2021 13:56:58 GMT+0800 (中国标准时间)
日期格式化:
var date = new Date().toString() console.log('toString()方法得到的时间为:' + date + ',类型为: ' + typeof date) // toString()方法得到的时间为:Mon Aug 16 2021 14:06:11 GMT+0800 (中国标准时间),类型为: string
完整方法:
Date.parse() 函数 -- 解析一个日期的字符串,并返回该日期距1970年1月1日午夜之间的毫秒数(时间戳) JavaScript_Date函数按照字母分类 Date() 函数 -- Date对象的构造函数 getDate() 函数 -- 返回date对象中的月份中的天数(1-31) getDay()函数 -- 返回date对象中的星期中的天数(0-6) getFullYear() 函数 -- 返回date对象中的四位数年份 getHours()函数 -- 返回date对象中的小时数(0-23) getMilliseconds() 函数 -- 返回date对象中的毫秒数(0-999) getMinutes() 函数 -- 返回date对象中的分钟数(0-59) getMonth() 函数 -- 返回date对象中的月份数(0-11) getSeconds() 函数 -- 返回date对象中的秒数(0-59) getTime() 函数 -- 返回date对象的时间戳表示法(毫秒表示) getTimezoneOffset() 函数 -- 返回本地时间与用UTC表示当前日期的时间差,以分钟为单位 getUTCDate() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份中的一天(1-31) getUTCDay() 函数 -- 返回date对象中用世界标准时间(UTC)表示的周中的一天(0-6) getUTCFullYear() 函数 -- 返回date对象中用世界标准时间(UTC)表示的四位年份 getUTCHours() 函数 -- 返回date对象中用世界标准时间(UTC)表示的小时数(0-23) getUTCMilliseconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的毫秒数(0-999) getUTCMinutes() 函数 -- 返回date对象中用世界标准时间(UTC)表示的分钟数(0-59) getUTCMonth() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份数(0-11) getUTCSeconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的秒数(0-59) getYear() 函数 -- 返回date对象的年份(真实年份减去1900) Date.parse() 函数 -- 解析一个日期的字符串,并返回该日期距1970年1月1日午夜之间的毫秒数(时间戳) setDate() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setFullYear() 函数 -- 设置date对象中的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setHours() 函数 -- 设置date对象的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setMilliseconds() 函数 -- 设置date对象的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setMinutes() 函数 -- 设置date对象的分钟,秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setMonth() 函数 -- 设置date对象中月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setSeconds() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setTime() 函数 -- 使用毫秒数设置date对象,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCDate() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCFullYear() 函数 -- 设置date对象中用世界标准时间(UTC)表示的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCHours() 函数 --- 设置date对象中用世界标准时间(UTC)表示的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCMilliseconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCMinutes() 函数 -- 设置date对象中用世界标准时间(UTC)表示的分钟,秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCMonth() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCSeconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setYear() 函数 -- 设置date对象的年份(真实年份减去1900) toDateString() 函数 -- 返回date对象的日期部分的字符串表示 toGMTString() 函数 -- 返回date对象的格林威治时间(GMT)的字符串表示 toLocaleDateString函数 -- 返回date对象的日期部分的本地化字符串 toLocaleTimeString函数 -- 返回date对象的时间部分的本地化字符串 toTimeString()函数 -- 返回date对象的时间部分的字符串 toUTCString函数 -- 返回date对象的世界标准时间(UTC)的字符串表示 Date.UTC()函数 -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳) Date() 函数 -- Date对象的构造函数 getDate() 函数 -- 返回date对象中的月份中的天数(1-31) getDay()函数 -- 返回date对象中的星期中的天数(0-6) getFullYear() 函数 -- 返回date对象中的四位数年份 getHours()函数 -- 返回date对象中的小时数(0-23) getMilliseconds() 函数 -- 返回date对象中的毫秒数(0-999) getMinutes() 函数 -- 返回date对象中的分钟数(0-59) getMonth() 函数 -- 返回date对象中的月份数(0-11) getSeconds() 函数 -- 返回date对象中的秒数(0-59) getTime() 函数 -- 返回date对象的时间戳表示法(毫秒表示) getTimezoneOffset() 函数 -- 返回本地时间与用UTC表示当前日期的时间差,以分钟为单位 getUTCDate() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份中的一天(1-31) getUTCDay() 函数 -- 返回date对象中用世界标准时间(UTC)表示的周中的一天(0-6) getUTCFullYear() 函数 -- 返回date对象中用世界标准时间(UTC)表示的四位年份 getUTCHours() 函数 -- 返回date对象中用世界标准时间(UTC)表示的小时数(0-23) getUTCMilliseconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的毫秒数(0-999) getUTCMinutes() 函数 -- 返回date对象中用世界标准时间(UTC)表示的分钟数(0-59) getUTCMonth() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份数(0-11) getUTCSeconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的秒数(0-59) getYear() 函数 -- 返回date对象的年份(真实年份减去1900) Date.UTC()函数 -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳) setDate() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setFullYear() 函数 -- 设置date对象中的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setHours() 函数 -- 设置date对象的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setMilliseconds() 函数 -- 设置date对象的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setMinutes() 函数 -- 设置date对象的分钟,秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setMonth() 函数 -- 设置date对象中月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setSeconds() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setTime() 函数 -- 使用毫秒数设置date对象,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCDate() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCFullYear() 函数 -- 设置date对象中用世界标准时间(UTC)表示的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCHours() 函数 --- 设置date对象中用世界标准时间(UTC)表示的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCMilliseconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCMinutes() 函数 -- 设置date对象中用世界标准时间(UTC)表示的分钟,秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCMonth() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setUTCSeconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setYear() 函数 -- 设置date对象的年份(真实年份减去1900) toDateString() 函数 -- 返回date对象的日期部分的字符串表示 toGMTString() 函数 -- 返回date对象的格林威治时间(GMT)的字符串表示 toLocaleDateString函数 -- 返回date对象的日期部分的本地化字符串 toLocaleTimeString函数 -- 返回date对象的时间部分的本地化字符串 toTimeString()函数 -- 返回date对象的时间部分的字符串 toUTCString函数 -- 返回date对象的世界标准时间(UTC)的字符串表示
常用方法:
1)格式化时间
function formatDate(currentDate) { // 获取年、月、日、小时、分钟和秒 const year = currentDate.getFullYear() const month = (currentDate.getMonth() + 1).toString().padStart(2, '0') // 月份从0开始,所以要加1,并补零 const day = currentDate.getDate().toString().padStart(2, '0') // 补零 const hours = currentDate.getHours().toString().padStart(2, '0') // 补零 const minutes = currentDate.getMinutes().toString().padStart(2, '0') // 补零 const seconds = currentDate.getSeconds().toString().padStart(2, '0') // 补零 // 拼接日期和时间字符串 return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds }
2)今日,近10分钟,近1小时...
let dt11 = new Date(new Date().setHours(0, 0, 0, 0)+1000*3600*24-1) console.log('今日结束点:', dt11, formatDate(dt11)) let dt3 = new Date(); // 一次性指定时分秒 dt3.setHours(0, 0, 0) console.log('今日零点2:', dt3, formatDate(dt3)) // 昨日时间 let dt4 = new Date(dt3.getTime() - 3600 * 1000 * 24) // 毫秒级的时间戳 console.log('昨日零点:', dt4, formatDate(dt4)) // 10分钟前 let dt5 = new Date(); dt5.setMinutes(dt5.getMinutes() - 10) console.log('十分钟前时间:', dt5, formatDate(dt5)) // 1小时前,取整 let dt6 = new Date(); dt6.setHours(dt6.getHours() - 1) dt6.setMinutes(0) dt6.setSeconds(0) console.log('一个小时前时间(整点):', dt6, formatDate(dt6))
更好用的第三方库: dayjs
使用
-
安装
npm install dayjs --save
import dayjs from 'dayjs'
-
解析
- 不带参数调用dayjs() 将返回一个新的Day.js对象,其中包含当前日期和时间。所有的dayjs对象都是不可变的
dayjs() //返回当前时间
- 字符串 以ISO 8601格式解析给定字符串并返回day.js对象实例。
dayjs('2018-04-04')
- Unix时间戳(毫秒) 通过一个毫秒数的整数值来创建Day.js 注:时间戳必须为数字格式
dayjs(1650767260745)
- 克隆
const a = dayjs()
const b = a.clone() //利用clone()进行克隆
const c = dayjs(a) //利用dayjs对象上调用dayjs()进行克隆
- 验证 判断一个dayjs对象是否包含有效日期
dayjs().isValid() //true or false
-
取值/赋值
- 毫秒
dayjs().millisecond() //当前毫秒
dayjs().millisecond(1) //设置毫秒为1时dayjs对象
- 秒
dayjs().second() //当前秒
dayjs().second(1) //设置秒为1时dayjs对象
- 分钟
dayjs().minute() //当前分钟
dayjs().minute(1) //设置分钟为1时dayjs对象
- 小时
dayjs().hour() //当前小时
dayjs().hour(1) //设置小时为1时dayjs对象
- 天
dayjs().date() //当前几号
dayjs().date(1) //设置当前月份天数为1时dayjs对象
- 星期 (取值为0-6,0周天,6周六 )
dayjs().day() //当前周几
dayjs().day(1) //设置本周一时dayjs对象
- 月 (取值为0-11, 0一月,11十二月)
dayjs().month() //当前月份
dayjs().month(1) //设置当前年的2月时dayjs对象
- 年
dayjs().year() //当前年份
dayjs().year(2020) //设置年份2020年当前时间时dayjs对象
-
操作
- 增加
dayjs().add(7,'day') //在当前基础上往后推7天
- 减少
dayjs().subtract(1,'year') //在当前基础上往前减少一年
- 开始/结束时间
dayjs().startOf('month') //本月第一天初始时间 Sun Apr 24 2022 00:00:00 GMT+0800 (China Standard Time)
dayjs().endOf('month') //本月最后一天结束时间 Sat Apr 30 2022 23:59:59 GMT+0800 (China Standard Time)
-
显示
- 格式化
dayjs().format() //'2022-04-24T11:43:05+08:00'
dayjs().format('YYYY--MM DD') //'2022--04 24'
dayjs().format('[自定义内容] +YYYY-MM-DD HH:mm:ss') //'自定义内容 +2022-04-24 11:45:41'
- Unix时间戳
dayjs().valueOf() //毫秒时间戳
dayjs().Unix() //秒时间戳
- 获取当月天数
dayjs().daysInMonth() //30
- 转Date(原生Date对象)
dayjs().toDate() //Sun Apr 24 2022 11:49:03 GMT+0800 (China Standard Time)
- 转JSON
dayjs().toJSON() //'2022-04-24T03:49:29.718Z'
- 转字符串
dayjs().toString() //'Sun, 24 Apr 2022 03:49:58 GMT'
- 转ISO 8601字符串
dayjs().toISOString() //'2022-04-24T03:51:24.088Z'