Dayjs处理时间函数的插件
现在很多处理时间格式化的插件,我平时项⽬中最常⽤的便是Dayjs这个插件,我觉得这个插件还是很好⽤的。现在说⼀下这个插件的基本使⽤。
Dayjs并没有覆盖Javascript原⽣的Date.prototype,⽽是创造了⼀个全新的包含Javascript Date对象的Dayjs的对象。Dayjs对象是不可变的,所有的API操作都会返回⼀个新的Dayjs对象。
  我使⽤的时候⼀般会绑在Vue原型上使⽤。当然,和框架使⽤没关系
  在Vue中⼀般是全局安装,然后挂载到Vue原型上
//安装⽅式
yarn add dayjs --save
npm i dayjs --save
//引⼊⽅式
import dayjs from 'dayjs'
Vue.prototype.$d = dayjs 
下述介绍的是最常⽤的⼏种时间处理⽅式,原⽂档中还有⼀些项⽬中不常⽤的,
⼀、基本使⽤   
//当前时间
dayjs()
//格式化的时间
this.$d().format('YYYY-MM-DD HH:mm:ss')
//Date对象
dayjs(new Date(2019,10,15))//输出结果:Thu, 14 Nov 2019 16:00:00 GMT
dayjs(new Date(2019,10,15)).format('YYYY-MM-DD) //输出结果:2019-11-15
//Unix时间戳(毫秒/秒)
/
/毫秒和秒的差别就在传⼊的时间戳是13位还是10位
dayjs.unix(new Date().getTime())//输出结果 Tue, 15 Oct 2019 08:01:01 GMT
//⾃定义时间格式
dayjs().format('DD-MM-YYYY')//输出结果 15-10-2019
//复制时间
  Dayjs 对象是不可变的,如果想获得⼀个对象的拷贝,执⾏.clone()的⽅法。像dayjs()中传⼊⼀个Dayjs对象也能实现同样的效果
dayjs().clone()
//验证时间(返回值是true或false)
    可⽤单位
单位缩写描述
date⽇期
day d星期⼏(星期天0,星期六6)
month M⽉(⼀⽉0,⼗⼆⽉11)
year Y/y年
hour h时
minute m分
second s秒
millisecond ms毫秒
⼆、获取和设置时间
  ①获取年/⽉/⽇/星期/时/分/秒/毫秒
//获取或设置
//年
dayjs().year()
dayjs().year(2019)
//⽉
dayjs().month() //输出9
dayjs().month(10).format('YYYY-MM-DD') //输出2019-11-15
//⽇
dayjs().date()
dayjs().date(1)
//星期
dayjs().day()
dayjs.day(1)
/
/时
dayjs().hour()
dayjs().hour(1)
//秒
dayjs().second()
dayjs().second(1)
//毫秒
dayjs().millisecond()
dayjs().millisecond(1)
②设置时间
  dayjs().set( unit : String ,value : Int)
dayjs().set('date',30).format('YYYY-MM-DD') //2019-10-30
③获取时间
dayjs().get(unit:String)
dayjs().get('month') //从0开始
三、时间操作(增加,减少)
  dayjs().startOf('month').add(1,'day').substract(1,‘day’)
  ①增加:增加时间并返回⼀个新的Dayjs()对象
//格式
dayjs().add(value:Number,unit:String)
eg:
dayjs().add(1,'year')  //Fri, 16 Oct 2020 01:42:30 GMT
②减少 
//格式
dayjs().subtract(value:Number,unit:String)
//举例
dayjs().subtract(7,'month)// Sat, 16 Mar 2019 01:46:59 GMT
  ③开头时间:返回当前时间的开头时间的Dayjs() 对象,如⽉份第⼀天 
//格式
dayjs().startOf(unit:String)
//举例
dayjs().startOf('month').format('YYYY-MM-DD') //2019-10-01
  ④末尾时间
/
/格式
dayjs().endOf(unit : String)
//举例
dayjs().endOf('month').format('YYYY-MM-DD') //2019-10-31
四、格式化时间 .format()
格式输出描述
YY19两位数年份
YYYY2019四位数年份
M1~12⽉份,从1开始
MM01~12⽉份,两位数
MMM Jan~Dec简写的⽉份名称
MMMM January-December完整的⽉份名称D1~31⽉份⾥的⼀天
DD01~31⽉份⾥的⼀天,两位数
d0~6⼀周中的⼀天,星期天是0
dd Su~Sa最简写的⼀周中⼀天的名称
ddd Sun-Sat简写的⼀周中⼀天的名称
dddd Sunday-Saturday⼀周中⼀天的名称
H0~23⼩时
HH00~23⼩时,两位数
h1~12⼩时,12⼩时制
hh01~12⼩时,12⼩时制,两位数
m0~59分钟
mm00~59分钟,两位数
s0~59秒
js当前日期加一天ss00~59秒,两位数
SSS000~999毫秒,三位数
Z+5:00UTC的偏移量
ZZ+500UTC 的偏移量,数字前⾯加上 0
A AM  PM
a am pm
五、时间差  return Number
  ①获取两个时间差,默认返回值是毫秒 
const date1 = dayjs('2019-11-20')
const date2 = dayjs('2019-10-15')
date1.diff(date2) //3110400000
date1.diff(date2,'month') //1
date1.diff(date2,'month',true) // 1.1666666666666667
date1.diff(date2,'day') //36
  ②Unix时间戳
//格式
dayjs().valueOf()
//举例
dayjs().valueOf()  //1571195016139
  ③Unix时间戳(秒) 
dayjs().unix() //1571195388
  ④UTC偏移量
dayjs().utcOffset() //480
  ⑤天数(⽉)
dayjs().daysInMonth() //31