Day.js的使用方法

399 阅读4分钟

Day.js的用法

今天学习了Day.js库的用法,Day.js 是一个轻量的处理时间和日期的 JavaScript 库,所有的 API 操作都将返回一个新的 Dayjs 对象。

安装

npm install dayjs 
const dayjs = require('dayjs')
//import dayjs from 'dayjs' // ES 2015 
dayjs().format()

解析

  • 直接调用 dayjs() 将返回一个包含当前日期和时间的 Day.js 对象。
var now = dayjs()
  • 解析传入的 ISO 8601 格式的字符串并返回一个 Day.js 对象实例。
dayjs('2018-04-04T16:00:00.000Z')
  • Unix 时间戳 (毫秒/秒)

解析传入的一个 Unix 时间戳 (13 位数字,从1970年1月1日 UTC 午夜开始所经过的毫秒数) 创建一个 Day.js 对象。

dayjs(1318781876406)
dayjs.unix(1318781876)
  • 使用原生 Javascript Date 对象创建一个 Day.js 对象。
var d = new Date(2018, 8, 18)
var day = dayjs(d)

这将克隆 Date 对象。 对传入的 Date 对象做进一步更改不会影响 Day.js 对象,反之亦然。

Get

从 Day.js 对象中获取相应信息的 getter。

可以理解为:

dayjs().get(unit) === dayjs()[unit]()

各个传入的单位对大小写不敏感,支持缩写和复数。 请注意,缩写是区分大小写的。

dayjs().get('year')
dayjs().get('month') // start 0
dayjs().get('date')
dayjs().get('hour')
dayjs().get('minute')
dayjs().get('second')
dayjs().get('millisecond')

set

通用的 setter,两个参数分别是要更新的单位和数值,调用后会返回一个修改后的新实例。

可以理解为:

dayjs().set(unit, value) === dayjs()[unit](value)
dayjs().set('date', 1)
dayjs().set('month', 3) // 四月
dayjs().set('second', 30)

也支持这样的链式调用

dayjs().set('hour', 5).set('minute', 55).set('second', 15)

其他获取日期方法

对日期的操作

Add

返回增加一定时间的复制的 Day.js 对象。

dayjs().add(7, 'day')

Subtract

返回减去一定时间的复制的 Day.js 对象。

dayjs().subtract(7, 'year')

Start of Time

返回复制的 Day.js 对象,并设置到一个时间的开始。

dayjs().startOf('year')

End of Time

返回复制的 Day.js 对象,并设置到一个时间的末尾。

dayjs().endOf('day') // Mon Mar 27 2023 23:59:59 GMT+0800

显示

Format

根据传入的占位符返回格式化后的日期。

将字符放在方括号中,即可原样返回而不被格式化替换 (例如, [MM])。

dayjs().format() 
// 默认返回的是 ISO8601 格式字符串 '2020-04-02T08:02:17-05:00'

dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]') 
// 'YYYYescape 2019-01-25T00:00:00-02:00Z'

dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019'

Difference

返回指定单位下两个日期时间之间的差异。

要获得以毫秒为单位的差异,请使用 dayjs#diff

const date1 = dayjs('2019-01-25')
const date2 = dayjs('2018-06-05')
date1.diff(date2) // 20214000000 默认单位是毫秒

要获取其他单位下的差异,则在第二个参数传入相应的单位。

const date1 = dayjs('2019-01-25')
date1.diff('2018-06-05', 'month') // 7

默认情况下 dayjs#diff 会将结果进位成整数。 如果要得到一个浮点数,将 true 作为第三个参数传入。

const date1 = dayjs('2019-01-25')
date1.diff('2018-06-05', 'month', true) // 7.645161290322581

Unix 时间戳 (毫秒/秒)

返回当前实例的 UNIX 时间戳,13位数字,毫秒

dayjs('2019-01-25').valueOf() // 1548381600000
+dayjs(1548381600000) // 1548381600000

dayjs('2019-01-25').unix() // 1548381600

月份中天数

获取当前月份包含的天数。

dayjs('2019-01-25').daysInMonth()

查询

Is Same

这表示 Day.js 对象是否和另一个提供的日期时间相同。

dayjs().isSame(dayjs('2011-01-01')) // 默认毫秒

如果想使用除了毫秒以外的单位进行比较,则将单位作为第二个参数传入。

当使用第二个参数时,将会连同去比较更大的单位。 如传入 month 将会比较 month 和 year。 传入 day 将会比较 day、 month和 year

dayjs().isSame('2011-01-01', 'year')