安装&引入
npm install dayjs
import dayjs from 'dayjs'
获取
获取当前时间(dayjs实例)
dayjs()
获取当前时间(Date原生对象)
dayjs().toDate() // Tue Nov 19 2024 14:26:39 GMT+0800 (中国标准时间)
获取当前时间(按对应格式输出的)
dayjs().format('YYYY-MM-DD') // 2024-11-19
dayjs().format('YYYY-MM-DD HH:mm:ss') // 2024-11-19 14:29:56
获取时间戳
dayjs().unix() // 秒 1731997844
dayjs().valueOf() // 毫秒 1731997991390
获取&设置年、月、日、时、分、秒、毫秒
// 年份
dayjs().year() // 输出结果:2022
// 月份:月份返回值比实际月份值小1,因此需要加1
dayjs().month()+1 // 输出结果:11
// 日
dayjs().date() // 输出结果:10
// 时
dayjs().hour() // 输出结果:10
// 分
dayjs().minute() // 输出结果:10
// 秒
dayjs().second() // 输出结果:15
// 毫秒
dayjs().millisecond() // 输出结果:952
// ------------------------------------------------------------------------------------------
// 设置时间就往里传值:其会返回dayjs实例
// 设置年份
dayjs().year(2022)
// 获取设置年份时间的月份
dayjs().year(2022).month() // 10 -> 10+1=11 才是月份 返回值小1;把前面的dayjs().year(2022)当做一个新的dayjs实例使用即可
// 设置月份:注意设置的是几月,那么,其就是几月,不会存在小1的情况
dayjs().month(10)
// 设置日
dayjs().date(10)
// 设置时
dayjs().hour(10)
// 设置分
dayjs().minute(10)
// 设置秒
dayjs().second(15)
// 设置毫秒
dayjs().millisecond(952)
操作
添加
获取一段时间后的时间,时间单位支持年、月、日、时、分、秒、毫秒、周、季度,返回的是 dayjs 实例。
dayjs().add(3, 'day').format('YYYY-MM-DD') // 当前为19号 其值为 2024-11-22
支持的时间单位如下:
单位 | 简写 | 说明 |
---|---|---|
day | d | 天 |
week | w | 周 |
month | M | 月 |
quarter | Q | 季度 |
year | y | 年 |
hour | h | 小时 |
minute | m | 分钟 |
second | s | 秒 |
millisecond | ms | 毫秒 |
开始时间
dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss') // 2024-11-19 00:00:00
单位同上
结束时间
dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss') // 2024-11-19 23:59:59
单位同上
时间差值
const date1 = dayjs('2022-11-14')
const date2 = dayjs('2022-10-2')
date1.diff(date2, 'day') // 43
date1.diff(date2, 'hour') // 1032
格式化
最常用的就是
dayjs.format('YYYY-MM-DD HH:mm:ss')
常用时间处理
const now = dayjs();
// 获取本年 开始时间 和 结束时间
const date1 = now.startOf('year').format('YYYY-MM-DD HH:mm:ss') // 2024-01-01 00:00:00
const date2 = now.endOf('year').format('YYYY-MM-DD HH:mm:ss') // 2024-12-31 23:59:59
// 获取本月的开始时间 和 结束时间
const date1 = now.startOf('month').format('YYYY-MM-DD HH:mm:ss') // 2024-11-01 00:00:00
const date2 = now.endOf('month').format('YYYY-MM-DD HH:mm:ss') // 2024-11-30 23:59:59
// 获取本周的开始时间 和 结束时间(周日为每周第一天)
const date1 = now.startOf('week').format('YYYY-MM-DD HH:mm:ss') // 2024-11-17 00:00:00
const date2 = now.endOf('week').format('YYYY-MM-DD HH:mm:ss') // 2024-11-23 23:59:59
// 获取本周的开始时间 和 结束时间(周一为每周第一天)
const date1 = now
.subtract(now.day() - 1, 'day')
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss')
const date2 = now
.subtract(now.day() - 1, 'day')
.startOf('day')
.add(6, 'day')
.endOf('day')
.format('YYYY-MM-DD HH:mm:ss')
// 获取上周的开始时间 和 结束时间(周日为每周第一天)
const date1 = now.subtract(1, 'week').startOf('week').format('YYYY-MM-DD HH:mm:ss')
const date2 = now.subtract(1, 'week').endOf('week').format('YYYY-MM-DD HH:mm:ss')
// 获取上周的开始时间 和 结束时间(周一为每周第一天)
const date1 = now
.subtract(now.day() - 1, 'day')
.subtract(1, 'week')
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss')
const date2 = now
.subtract(now.day() - 1, 'day')
.subtract(1, 'week')
.add(6, 'day')
.format('YYYY-MM-DD HH:mm:ss')
// 获取本日的开始时间 与 结束时间
const date1 = now.startOf('day').format('YYYY-MM-DD HH:mm:ss')
const date2 = now.endOf('day').format('YYYY-MM-DD HH:mm:ss')
// 获取昨天的开始时间 与 结束时间
const date1 = now.subtract(1, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')
const date2 = now.subtract(1, 'day').endOf('day').format('YYYY-MM-DD HH:mm:ss')
// 获取月份天数
console.log(dayjs('2024-2').daysInMonth())
// 判断某个日期是否 已经在已过日期 ( Boolean )
dayjs('2023-02-07').isBefore(dayjs()); // 2023-02-06 false ( 2023-02-07 不在 02-06 之前 )
// 判断某个日期是否跟某个日期相同 (boolean)
dayjs('2023-2-6').isSame(dayjs('2023-2-6')); // true
// 判断某个日期是否在某个日期之后
dayjs('2023-2-7').isAfter(dayjs('2023-2-9')); // false 如果两个一样那么也是返回 false
// 拿到字符串格式的时间,转化为对应格式,知道传入字符串的格式最好加上第二个参数指明,第二个参数可以是字符串也可以是数组(格式范围)
dayjs(row.create_time, 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD')