前言

  • Day.js 是代替修改本地Date.prototype,Day.js对Date对象进行了封装,只需要调用Dayjs()即可。
  • 相对moment.js而已,day.js的体积更小,只有2KB左右;moment.min.js 有16.7KB
  • 对应普通项目来说,对应时间的操作就只有那么几个(格式化、查询、计算),这些基于Day.js完全足够。并且Day.js的文档相对简单、清晰!

    初始化日期/时间

    1. dayjs().format('YYYY-MM-DD'); // 初始化日期
    2. dayjs().format('YYYY-MM-DD HH:mm:ss') // 初始化日期时间

    格式化日期/时间

    1. dayjs(value).format('YYYY-MM-DD'); // 初始化日期
    2. dayjs(value).format('YYYY-MM-DD HH:mm:ss') // 初始化日期时间

    加 / 减

    :::info dayjs().add / dayjs().subtract 代表在当前时间上去加减;
    dayjs(value).add / dayjs(value).subtract 代表在指定时间(value)上去加减; :::

    1. dayjs(value).format('YYYY-MM-DD'); // 初始化日期
    2. dayjs(value).format('YYYY-MM-DD HH:mm:ss') // 初始化日期时间

    获取某年某月的第一天或最后一天

  • 获取某年某月的第一天 ```javascript dayjs().startOf(‘year’).format(‘YYYY-MM-DD HH:mm:ss’) // 2022-01-01 00:00:00 => 第一天格式化出来的时分秒都是0

dayjs().startOf(‘month’).format(‘YYYY-MM-DD’) // 2022-04-01

  1. - **获取某年某月的最后一天**
  2. ```javascript
  3. dayjs().endOf('year').format('YYYY-MM-DD HH:mm:ss') // 2022-12-31 23:59:59 => 最后时间 格式化出来的时分秒是23:59:59
  4. dayjs().endOf('month').format('YYYY-MM-DD') // 2022-04-30

获取星期几

  1. dayjs().day() : 返回0(星期日)到6(星期六)的数字
  2. 设置时也只能接受 0-6 的数字:
  3. dayjs().day(6).format('YYYY-MM-DD'):获取最近周六的日期 => 2022-04-23
  4. dayjs().day(0).format('YYYY-MM-DD'):获取最近周日的日期 => 2022-04-17

获取毫秒数

  1. dayjs('2019-01-25').valueOf() dayjs().valueOf()

获取时间差

  1. dayjs('2019-01-25').diff('2018-06-05', 'month'); // 7
  2. dayjs('2019-01-25').diff(dayjs('2018-06-05'), 'month'); // 7

获取时、分、秒

  • 当前时间:2022-04-20 16:55:55
  • 以下大部分方法都会往前溢出;如毫秒超过999,将持续到秒;秒超过59,将持续到分,这边情况在设置时特别突出! ```javascript console.log(‘——-获取年’, dayjs().year()); // ==>> 2022

console.log(‘——-获取月’, dayjs().month()); // 0到11的数字 ==>> 3

console.log(‘——-获取星期’, dayjs().day()); // 0(星期日)到6(星期六)的数字 ==>> 3

console.log(‘——-获取天’, dayjs().date()); // 1到31的数字 ==>> 20

console.log(‘——-获取小时’, dayjs().hour()); // 0到23的数字 ==>> 16

console.log(‘——-获取分钟’, dayjs().minute());// 0到59的数字 ==>> 55

console.log(‘——-获取秒’, dayjs().second()); // 0到59的数字 ==>> 55

console.log(‘——-获取毫秒’, dayjs().millisecond()); // 0到999的数字 ==>> 333

  1. <a name="EHSts"></a>
  2. ## 将毫秒转为时分秒
  3. ```javascript
  4. // 下面毫秒数代表:2022-04-20 17:43:20
  5. const timestr = 1650447800731; // 毫秒值必须是number类型,如果是string,结果可能和你想的不一样
  6. console.log('将毫秒转为年-月-日 时:分:秒', dayjs(timestr).format('YYYY-MM-DD HH:mm:ss'));
  7. console.log('获取年', dayjs(timestr).year()); //
  8. console.log('获取月', dayjs(timestr).month());
  9. console.log('获取天', dayjs(timestr).date());
  10. console.log('获取时', dayjs(timestr).hour());
  11. console.log('获取分', dayjs(timestr).minute());

判断一个日期是否在另一个日期之后isAfter

  1. // day.js 为 2022-04-20
  2. console.log('isAfter', dayjs().isAfter(dayjs('2011-01-01'))) // true
  3. console.log('isAfter', dayjs('2022-04-20').isAfter(dayjs('2022-04-21'))) // false
  4. console.log('isAfter', dayjs('2022-04-20').isAfter(dayjs('2022-04-20'))) // 相同也为false

判断一个日期是否在另一个日期之前isBefore

  1. // day.js 为 2022-04-20
  2. console.log('isBefore', dayjs().isBefore(dayjs('2011-01-01'))) // false
  3. console.log('isBefore', dayjs('2022-04-20').isBefore(dayjs('2022-04-21'))) // true
  4. console.log('isBefore', dayjs('2022-04-20').isBefore(dayjs('2022-04-20'))) // 日期相同时也为false

判断两个日期是否相同isSame

  1. // day.js 为 2022-04-20
  2. console.log('isSame', dayjs().isSame(dayjs('2011-01-01'))) // false
  3. console.log('isSame', dayjs('2022-04-20').isSame(dayjs('2022-04-21'))) // false
  4. console.log('isSame', dayjs('2022-04-20').isSame(dayjs('2022-04-20'))) // true

判断一个日期是否在两个日期之间isBetween

:::info 注意:
此功能依赖IsBetween插件
此处也将演示如何使用 Day.js 的插件 :::

  1. import dayjs from 'dayjs' // 引入dayjs
  2. import isBetween from 'dayjs/plugin/isBetween' // 引入相关插件
  3. created() {
  4. dayjs.extend(isBetween); // 挂载插件
  5. // 使用插件
  6. console.log('isBetween', dayjs('2010-10-20').isBetween('2010-10-19', dayjs('2010-10-25')) )
  7. }

常用时间键值对

  1. ranges={{
  2. 今天: [dayjs().startOf('day'), dayjs().endOf('day')],
  3. 昨天: [dayjs().subtract(1, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
  4. 本周: [dayjs().day(1).startOf('day'), dayjs().endOf('day')],
  5. 过去7天: [dayjs().subtract(7, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
  6. 过去15天: [dayjs().subtract(15, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
  7. 本月: [dayjs().startOf('month'), dayjs().endOf('day')],
  8. 过去30天: [dayjs().subtract(30, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
  9. 过去90天: [dayjs().subtract(90, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
  10. 过去180天: [dayjs().subtract(180, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
  11. 过去365天: [dayjs().subtract(365, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')]
  12. }}