Day.js 是一个仅 2kb 大小的轻量级 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样。如果你曾经用过 Moment.js ,那么你已经知道如何使用 Day.js 。
Day.js
维度 | Moment.js | Day.js |
---|---|---|
体积 | 约 40KB+ (完整版本),包含大量功能模块。 | 仅 2KB(核心库),插件按需引入,体积极小。 |
API 设计 | 功能全面(如 | 极简 API,保留高频操作(如 |
功能完整性 | 原生支持时区(需单独引入 | 核心库仅包含基础功能,时区(需 |
性能 | 解析和操作大型时间数据时性能中等,体积大导致加载速度较慢。 | 轻量核心 + 按需加载,解析和操作速度更快,尤其在移动端或高频时间处理场景优势明显。 |
浏览器支持 | 兼容 IE 8+ 及现代浏览器,对旧版浏览器友好。 | 依赖 ES6+(如 |
生态与社区 | 生态成熟,周边工具丰富(如 Webpack 插件、React 组件等),但更新停滞。 | 生态快速发展中,主流框架(如 Vue、React)适配良好,插件系统完善(官方维护 20+ 插件)。 |
维护状态 | 进入维护模式,仅安全更新,无新功能。 | 活跃维护,定期发布新版本,快速响应社区需求。 |
https://dayjs.uihtm.com
首先,安装 Day.js:
npm install dayjs
将项目中的 Moment.js 导入语句替换为 Day.js:
// 将
import moment from 'moment';
// 替换为
import dayjs from 'dayjs';
将 Moment.js 的 API 调用替换为 Day.js 的等效调用。由于两者的 API 非常相似,大多数情况下只需简单替换即可:
// Moment.js
const date = moment('2023-10-01');
console.log(date.format('YYYY-MM-DD'));
// Day.js
const date = dayjs('2023-10-01');
console.log(date.format('YYYY-MM-DD'));
在某些情况下,Day.js 和 Moment.js 的行为可能略有不同。你需要根据具体情况调整代码。例如,Day.js 的 diff
方法返回的是毫秒数,而 Moment.js 返回的是天数:
// Moment.js
const diff = moment('2023-10-02').diff('2023-10-01', 'days'); // 1
// Day.js
const diff = dayjs('2023-10-02').diff('2023-10-01', 'day'); // 1
如果你需要使用 Day.js 的高级功能(如时区支持),可以引入相应的插件:
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
const date = dayjs().tz('America/New_York');
console.log(date.format('YYYY-MM-DD HH:mm:ss'));
两者语法高度相似,迁移成本低。若项目对体积和性能敏感,Day.js 是更优解;若功能全面性和旧项目兼容更重要,Moment.js 仍可短期使用,但长期建议迁移至活跃库(如 Day.js 或 Luxon)。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。