前言
day.js是对Date对象进行封装的一个日期处理工具,和moment.js相比,day.js的体积较小,2KB左右;moment.js 有16KB左右。在项目中,对于日期时间的简单处理,使用day.js已经足够。
安装
npm install dayjs
或
cnpm install dayjs
或
yarn add dayjs
或
pnpm add dayjs
引入
const dayjs = require('dayjs');
或
import dayjs from 'dayjs';
或
<scriptsrc="https://unpkg.com/[email protected]/dayjs.min.js"></script>
使用
格式化日期/时间
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'); // 格式化日期时间
计算日期/时间
num: 数字
type: 类型,可为 "week"、"day"、"month"、"year"、"hour"、"minute"、"second"、"millisecond"
dayjs().add(num, type).format('YYYY-MM-DD');
或
dayjs().subtract(num, type).format('YYYY-MM-DD');
dayjs().add(7, 'day').format('YYYY-MM-DD'); // 当前日期 -> 2023-03-15 加上7天
dayjs().add(1, 'month').format('YYYY-MM-DD'); // 当前日期 -> 2023-04-08 加上一个月
dayjs().subtract(2, 'year').format('YYYY-MM-DD'); // 当前日期 -> 2021-03-08 减去2年
dayjs().subtract(2, 'hour').format('YYYY-MM-DD HH:mm:ss'); // 当前日期时间 -> 2023-03-08 19:29:25 减去2小时
获取某年某月的第一天或最后一天
// 某年某月的第一天
dayjs().startOf('year').format('YYYY-MM-DD HH:mm:ss'); // 2023-03-01 00:00:00
dayjs().startOf('month').format('YYYY-MM-DD'); // 2023-03-01
// 某年某月的最后一天
dayjs().endOf('year').format('YYYY-MM-DD HH:mm:ss'); // 2023-03-31 23:59:59
dayjs().endOf('month').format('YYYY-MM-DD'); // 2023-03-31
常用时间获取操作
方法 |
单位 |
单位描述 |
描述 |
dayjs().year() |
年 |
获取年份 |
|
dayjs().month() |
月 |
返回0-11数字 |
获取月份 |
dayjs().date() |
天 |
返回1-31数字 |
获取当月某天 |
dayjs().hour() |
小时 |
返回0-23 |
获取当前小时 |
dayjs().minute() |
分钟 |
返回0-59数字 |
获取当前分钟 |
dayjs().second() |
秒 |
返回0-59数字 |
获取当前秒 |
dayjs().millisecond() |
毫秒 |
返回0-999数字 |
或群当前毫秒 |
dayjs().day(num) |
num设置0-6(星期天-星期六) |
获取星期几 |
|
dayjs('2022-03-08').diff('2023-03-08', 'month') |
前者与后者的时间差 |
获取时间差 |
时间戳/指定日期转换年月日时分秒
dayjs(timestamp).year();
dayjs("2022-09-09").year();
日期的相同与否、前后判断,返回布尔值
dayjs().isSame(dayjs('2022-03-08')); // 是否相同 true/false
dayjs().isBefore(dayjs('2022-03-08')); // 当前日期是否在2022-03-08之前
dayjs().isAfter(dayjs('2022-03-08')); // 当前日期是否在2022-03-08之后
判断是否为时间日期
dayjs('2023-03-08').isValid(); // 传入的值能否被解析成一个时间日期
导入本地化语言和插件
import * as dayjs from 'dayjs';
import * as isLeapYear from 'dayjs/plugin/isLeapYear'; // 导入插件
import'dayjs/locale/zh-cn'; // 导入本地化语言
// 扩展插件
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';
import isBetween from 'dayjs/plugin/isBetween';
dayjs.extend(isSameOrBefore); // 相同或之前
dayjs.extend(isSameOrAfter); // 相同或之后
dayjs.extend(isBetween); // 是否在之间
dayjs('2022-03-08').isBetween('2020-01-01', dayjs('2023-03-08'));
dayjs().isSameOrBefore(dayjs('2023-03-08'));
dayjs.extend(isLeapYear); // 使用插件
dayjs.locale('zh-cn'); // 使用本地化语言
注意
element-plus 组件库默认支持 dayjs 进行日期时间处理。
import { dayjs } from 'element-plus';
isAfter、isBefore、isSame、IsBetween 默认都是通过将日期转为milliseconds去比较的。