dayjs
About 1 min
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()))