dayjs常用时间处理

时间:2024-11-20 10:46:56

安装&引入

npm install dayjs
import dayjs from 'dayjs'

获取

获取当前时间(dayjs实例)

dayjs()

image-20241119142502567

获取当前时间(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')