跳至主要內容

dayjs


dayjs

Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样

安装

pnpm install dayjs
npm install dayjs

高频使用

// 时间戳 毫秒 13位
console.log(dayjs('2022-01-25').valueOf())
// 时间戳 秒 10位
console.log(dayjs('2022-01-25').unix())

// 格式化
console.log(dayjs().format('YYYY-MM-DDTHH:mm:ss'))

解析

/**
 * dayjs 解析操作
 */

const dayjs = require('dayjs')

console.log(dayjs().format())
// 输出: 2023-03-13T22:28:34+08:00

// 解析
console.log(dayjs('2018-04-04T16:00:00.000Z'))
// 输出:
// {
//     '$L': 'en',
//         '$d': 2018-04-04T16:00:00.000Z,
//         '$x': {},
//     '$y': 2018,
//         '$M': 3,
//         '$D': 5,
//         '$W': 4,
//         '$H': 0,
//         '$m': 0,
//         '$s': 0,
//         '$ms': 0
// }

// 解析毫秒级时间戳,返回解析后的对象
console.log(dayjs(1318781876406))

// 解析秒级时间戳,返回解析后的对象
console.log(dayjs.unix(1318781876))
console.log(dayjs.unix(1318781876.721))

// Date对象
const date = new Date(2022, 8, 18)
console.log(dayjs(date))

// 对象复制
const a = dayjs()
const b = a.clone()
console.log(a, b)
// a 和 b 是两个独立的 Day.js 对象
// 在 dayjs() 里传入一个 Day.js 对象也会返回一个复制的对象。
const c = dayjs()
const d = dayjs(c)
console.log(c, d)

// 校验是否为日期
console.log(dayjs('2022-01-33').isValid())
// true, parsed to 2022-02-02
console.log(dayjs('some invalid string').isValid())
// false

取值|赋值

/**
 * dayjs 的取值|赋值操作
 */
const dayjs = require('dayjs')

// 获取或设置毫秒
console.log(dayjs().millisecond())
console.log(dayjs().millisecond(1))

// 获取或设置秒
console.log(dayjs().second())
console.log(dayjs().second(1))

// 获取或设置小时
console.log(dayjs().hour())
console.log(dayjs().hour(12))

/**
 * dayjs.date 是该月的日期。 dayjs.day 是星期几
 */

// 获取或设置月份里的日期
console.log(dayjs().date())
console.log(dayjs().date(10))

// 获取或设置星期几
console.log(dayjs().day())
console.log(dayjs().day(3))

// 获取或设置月份
console.log(dayjs().month())
console.log(dayjs().month(0))

// 获取或设置年份
console.log(dayjs().year())
console.log(dayjs().year(2023))

// get方法获取
console.log(dayjs().get('year'))
console.log(dayjs().get('month'))
console.log(dayjs().get('date'))
console.log(dayjs().get('hour'))
console.log(dayjs().get('minute'))
console.log(dayjs().get('second'))
console.log(dayjs().get('millisecond'))

// set方法设置
console.log(dayjs().set('date', 1))
console.log(dayjs().set('month', 6)) // 5月
console.log(dayjs().set('second', 30))
// 支持链式调用
console.log(dayjs().set('hour', 8).set('minute', 35).set('second', 15))

操作

/**
 * 操作dayjs对象
 */
const dayjs = require('dayjs')

// 支持链式调用
console.log(dayjs('2019-01-25').add(1, 'day').subtract(1, 'year').year(2009).toString())

// 增加一定时间 参考:https://dayjs.gitee.io/docs/zh-CN/manipulate/add
console.log(dayjs().add(7, 'day'))
console.log(dayjs().add(10, 'hour'))

// 减去一定时间 , 同上
console.log(dayjs().subtract(7, 'year'))
console.log(dayjs().subtract(2, 'month'))

// 设置到一个时间的开始
console.log(dayjs().startOf('year'))
// 设置到一个时间的末尾
console.log(dayjs().endOf('month'))

显示

/**
 * 展示 Day.js 对象的操作
 * api参考:https://dayjs.gitee.io/docs/zh-CN/display/format
 */

const dayjs = require('dayjs')

// 将字符串格式化为日期
console.log(dayjs().format('YYYY-MM-DD HH:mm:ss'))
// 默认返回的是 ISO8601 格式字符串 '2020-04-02T08:02:17-05:00'
console.log(dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]'))
// 'YYYYescape 2019-01-25T00:00:00-02:00Z'
console.log(dayjs('2019-01-25').format('DD/MM/YYYY')) // '25/01/2019'

// 时间戳 毫秒 13位
console.log(dayjs('2022-01-25').valueOf())
// 时间戳 秒 10位
console.log(dayjs('2022-01-25').unix())

// 获取当前月份包含的天数
console.log(dayjs('2019-01-25').daysInMonth())

// 原生Date对象
console.log(dayjs('2019-01-25').toDate())

查询

/**
 * dayjs的查询操作
 * api参考:https://dayjs.gitee.io/docs/zh-CN/query/query
 */

const dayjs = require('dayjs')

// 是否在一个日期之前
console.log(dayjs().isBefore(dayjs('2021-01-01')))
// 比较年份
console.log(dayjs().isBefore('2024-01-01', 'year'))

// 日期是否相同
console.log(dayjs().isSame(dayjs('2011-01-01')))
console.log(dayjs().isSame('2023-3-13', 'year'))

// 是否在一个日期之后面
console.log(dayjs().isAfter(dayjs('2021-01-01')))
// 比较年份
console.log(dayjs().isAfter('2024-01-01', 'year'))

// 是否为dayjs对象
console.log(dayjs.isDayjs(dayjs()))
console.log(dayjs.isDayjs(new Date()))