一、简介
dayjs
是一个轻量级的 JavaScript 库,用于解析、验证、操作和格式化日期。它类似于 moment.js
,但体积更小,性能更好。
二、安装
①使用 npm 安装
npm install dayjs
②在 HTML 中引入
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
三、常用方法
format([String])
: 格式化日期。import dayjs from 'dayjs'; const now = dayjs(); console.log(now.format()); // 输出: YYYY-MM-DDTHH:mm:ssZ (默认格式) console.log(now.format('YYYY-MM-DD')); // 输出: 2023-10-05 console.log(now.format('YYYY/MM/DD')); // 输出: 2023/10/05 console.log(now.format('MM/DD/YYYY')); // 输出: 10/05/2023 console.log(now.format('DD-MM-YYYY')); // 输出: 05-10-2023 console.log(now.format('HH:mm:ss')); // 输出: 14:30:45 (假设当前时间为14:30:45) console.log(now.format('MMMM D, YYYY')); // 输出: October 5, 2023
add(number, string)
: 添加时间。import dayjs from 'dayjs'; const now = dayjs(); console.log(now.add(1, 'day').format('YYYY-MM-DD')); // 输出: 2023-10-06 (假设当前日期为2023-10-05) console.log(now.add(2, 'month').format('YYYY-MM')); // 输出: 2024-12 (假设当前日期为2023-10-05) console.log(now.add(3, 'year').format('YYYY')); // 输出: 2026 (假设当前日期为2023-10-05) console.log(now.add(5, 'hour').format('HH:mm:ss')); // 输出: 19:30:45 (假设当前时间为14:30:45) console.log(now.add(30, 'minute').format('HH:mm:ss')); // 输出: 15:00:45 (假设当前时间为14:30:45)
subtract(number, string)
: 减去时间。import dayjs from 'dayjs'; const now = dayjs(); console.log(now.subtract(1, 'day').format('YYYY-MM-DD')); // 输出: 2023-10-04 (假设当前日期为2023-10-05) console.log(now.subtract(2, 'month').format('YYYY-MM')); // 输出: 2023-08 (假设当前日期为2023-10-05) console.log(now.subtract(3, 'year').format('YYYY')); // 输出: 2020 (假设当前日期为2023-10-05) console.log(now.subtract(5, 'hour').format('HH:mm:ss')); // 输出: 09:30:45 (假设当前时间为14:30:45) console.log(now.subtract(30, 'minute').format('HH:mm:ss')); // 输出: 13:59:45 (假设当前时间为14:30:45)
startOf(string)
和endOf(string)
: 获取指定单位的开始或结束时间。import dayjs from 'dayjs'; const now = dayjs('2023-10-05T14:30:45'); console.log(now.startOf('year').format('YYYY-MM-DD')); // 输出: 2023-01-01 console.log(now.startOf('month').format('YYYY-MM-DD')); // 输出: 2023-10-01 console.log(now.startOf('day').format('YYYY-MM-DD')); // 输出: 2023-10-05 console.log(now.startOf('hour').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:00:00 console.log(now.startOf('minute').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:30:00 console.log(now.endOf('year').format('YYYY-MM-DD')); // 输出: 2023-12-31 console.log(now.endOf('month').format('YYYY-MM-DD')); // 输出: 2023-10-31 console.log(now.endOf('day').format('YYYY-MM-DD')); // 输出: 2023-10-05 console.log(now.endOf('hour').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:59:59 console.log(now.endOf('minute').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:30:59
isBefore(Dayjs|String)
和isAfter(Dayjs|String)
: 比较日期。import dayjs from 'dayjs'; const date1 = dayjs('2023-10-05'); const date2 = dayjs('2023-10-06'); console.log(date1.isBefore(date2)); // 输出: true console.log(date1.isAfter(date2)); // 输出: false const date3 = dayjs('2023-10-05'); const date4 = dayjs('2023-10-05'); console.log(date3.isBefore(date4)); // 输出: false console.log(date3.isAfter(date4)); // 输出: false
diff(Dayjs|String, string, Boolean)
: 计算两个日期之间的差值。import dayjs from 'dayjs'; const date1 = dayjs('2023-10-01'); const date2 = dayjs('2023-10-10'); console.log(date2.diff(date1, 'day')); // 输出: 9 console.log(date2.diff(date1, 'month')); // 输出: 0 console.log(date2.diff(date1, 'year')); // 输出: 0 const date3 = dayjs('2023-10-05T14:30:45'); const date4 = dayjs('2023-10-05T15:00:45'); console.log(date4.diff(date3, 'hour')); // 输出: 0 console.log(date4.diff(date3, 'minute')); // 输出: 30 console.log(date4.diff(date3, 'second')); // 输出: 1800
fromNow(Boolean)
和toNow(Boolean)
: 获取相对时间描述。import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; // 加载插件 dayjs.extend(relativeTime); const pastDate = dayjs().subtract(2, 'day'); const futureDate = dayjs().add(3, 'day'); console.log(pastDate.fromNow()); // 输出: 2 days ago console.log(futureDate.toNow()); // 输出: in 3 days const now = dayjs(); console.log(now.fromNow()); // 输出: a few seconds ago console.log(now.toNow()); // 输出: in a few seconds
四、基本用法
// 引入 dayjs
import dayjs from 'dayjs';
// 获取当前时间
const now = dayjs();
console.log(now.format()); // 输出: YYYY-MM-DDTHH:mm:ssZ
// 格式化日期
console.log(dayjs().format('YYYY-MM-DD')); // 输出: 2023-10-05
// 解析日期字符串
const parsedDate = dayjs('2023-10-05');
console.log(parsedDate.format('MMM D, YYYY')); // 输出: Oct 5, 2023
// 日期运算
console.log(dayjs().add(1, 'day').format('YYYY-MM-DD')); // 明天的日期
console.log(dayjs().subtract(1, 'month').format('YYYY-MM')); // 上个月