前言
- Day.js 是代替修改本地Date.prototype,Day.js对Date对象进行了封装,只需要调用Dayjs()即可。
- 相对moment.js而已,day.js的体积更小,只有2KB左右;moment.min.js 有16.7KB。
对应普通项目来说,对应时间的操作就只有那么几个(格式化、查询、计算),这些基于Day.js完全足够。并且Day.js的文档相对简单、清晰!
初始化日期/时间
dayjs().format('YYYY-MM-DD'); // 初始化日期
dayjs().format('YYYY-MM-DD HH:mm:ss') // 初始化日期时间
格式化日期/时间
dayjs(value).format('YYYY-MM-DD'); // 初始化日期
dayjs(value).format('YYYY-MM-DD HH:mm:ss') // 初始化日期时间
加 / 减
:::info dayjs().add / dayjs().subtract 代表在当前时间上去加减;
dayjs(value).add / dayjs(value).subtract 代表在指定时间(value)上去加减; :::dayjs(value).format('YYYY-MM-DD'); // 初始化日期
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
- **获取某年某月的最后一天**
```javascript
dayjs().endOf('year').format('YYYY-MM-DD HH:mm:ss') // 2022-12-31 23:59:59 => 最后时间 格式化出来的时分秒是23:59:59
dayjs().endOf('month').format('YYYY-MM-DD') // 2022-04-30
获取星期几
dayjs().day() : 返回0(星期日)到6(星期六)的数字
设置时也只能接受 0-6 的数字:
dayjs().day(6).format('YYYY-MM-DD'):获取最近周六的日期 => 2022-04-23
dayjs().day(0).format('YYYY-MM-DD'):获取最近周日的日期 => 2022-04-17
获取毫秒数
dayjs('2019-01-25').valueOf() 或 dayjs().valueOf()
获取时间差
dayjs('2019-01-25').diff('2018-06-05', 'month'); // 7
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
<a name="EHSts"></a>
## 将毫秒转为时分秒
```javascript
// 下面毫秒数代表:2022-04-20 17:43:20
const timestr = 1650447800731; // 毫秒值必须是number类型,如果是string,结果可能和你想的不一样
console.log('将毫秒转为年-月-日 时:分:秒', dayjs(timestr).format('YYYY-MM-DD HH:mm:ss'));
console.log('获取年', dayjs(timestr).year()); //
console.log('获取月', dayjs(timestr).month());
console.log('获取天', dayjs(timestr).date());
console.log('获取时', dayjs(timestr).hour());
console.log('获取分', dayjs(timestr).minute());
判断一个日期是否在另一个日期之后isAfter
// day.js 为 2022-04-20
console.log('isAfter', dayjs().isAfter(dayjs('2011-01-01'))) // true
console.log('isAfter', dayjs('2022-04-20').isAfter(dayjs('2022-04-21'))) // false
console.log('isAfter', dayjs('2022-04-20').isAfter(dayjs('2022-04-20'))) // 相同也为false
判断一个日期是否在另一个日期之前isBefore
// day.js 为 2022-04-20
console.log('isBefore', dayjs().isBefore(dayjs('2011-01-01'))) // false
console.log('isBefore', dayjs('2022-04-20').isBefore(dayjs('2022-04-21'))) // true
console.log('isBefore', dayjs('2022-04-20').isBefore(dayjs('2022-04-20'))) // 日期相同时也为false
判断两个日期是否相同isSame
// day.js 为 2022-04-20
console.log('isSame', dayjs().isSame(dayjs('2011-01-01'))) // false
console.log('isSame', dayjs('2022-04-20').isSame(dayjs('2022-04-21'))) // false
console.log('isSame', dayjs('2022-04-20').isSame(dayjs('2022-04-20'))) // true
判断一个日期是否在两个日期之间isBetween
:::info
注意:
此功能依赖IsBetween插件
此处也将演示如何使用 Day.js 的插件
:::
import dayjs from 'dayjs' // 引入dayjs
import isBetween from 'dayjs/plugin/isBetween' // 引入相关插件
created() {
dayjs.extend(isBetween); // 挂载插件
// 使用插件
console.log('isBetween', dayjs('2010-10-20').isBetween('2010-10-19', dayjs('2010-10-25')) )
}
常用时间键值对
ranges={{
今天: [dayjs().startOf('day'), dayjs().endOf('day')],
昨天: [dayjs().subtract(1, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
本周: [dayjs().day(1).startOf('day'), dayjs().endOf('day')],
过去7天: [dayjs().subtract(7, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
过去15天: [dayjs().subtract(15, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
本月: [dayjs().startOf('month'), dayjs().endOf('day')],
过去30天: [dayjs().subtract(30, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
过去90天: [dayjs().subtract(90, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
过去180天: [dayjs().subtract(180, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')],
过去365天: [dayjs().subtract(365, 'day').startOf('day'), dayjs().subtract(1, 'day').endOf('day')]
}}