Day.js
一个仅 2kB 的轻量级 JavaScript 日期时间库,API 与 Moment.js 高度兼容,支持不可变、链式调用、国际化与按需插件,是现代前端项目中替代 Moment.js 的主流选择。
爱鲜报评分
0.0
0 人评分
开源 · MIT
#JavaScript
#前端
#工具库
#日期时间
#Moment.js
49k
星数
是
中文
JavaScript
主语言
是
活跃
358
贡献者
人工分析
EDITORIAL推荐理由
Day.js 体积仅约 2kB,却覆盖解析、校验、计算、格式化等常用日期能力,API 与 Moment.js 基本一致,迁移成本极低。它采用不可变设计与链式调用,配合按需加载的 locale 与插件机制,可有效控制打包体积。近 5 万 Star、MIT 协议、多语言文档齐备,适合作为前端日期处理的标准依赖。
适用场景
- 前端项目日期格式化与展示
- 从 Moment.js 平滑迁移
- 多语言/多时区国际化日期处理
- 轻量级工具库或移动端 H5 项目
- 需要按需裁剪体积的打包优化场景
优点
- 体积小,gzip 后约 2kB,对包体积友好
- API 与 Moment.js 高度兼容,学习与迁移成本低
- 不可变 + 链式调用,使用直观且不易产生副作用
- 国际化与插件按需加载,不引入未使用的代码
- 社区活跃、Star 数高、文档多语言且完善
缺点
- 核心功能精简,复杂时区/时长等能力需额外插件
- 插件需手动 extend,忘记注册易出现功能缺失
- 部分 Moment.js 边缘行为并非完全一致,迁移需回归测试
- 仅专注日期处理,不含日历组件等 UI 能力
上手难度
入门
Day.js 简介
Day.js 是一个极简的 JavaScript 日期时间库,压缩后仅约 2kB,API 与 Moment.js 高度兼容。如果你用过 Moment.js,几乎可以无缝切换到 Day.js。
它负责解析、校验、操作与展示日期时间,适用于现代浏览器环境。
核心特性
- 🕒 熟悉的 Moment.js API 与写法
- 💪 不可变(immutable),操作返回新实例
- 🔥 支持链式调用
- 🌐 完善的国际化(i18n)支持
- 📦 体积仅约 2kB
- 👫 兼容主流浏览器
快速上手
通过 npm 安装:
npm install dayjs --save
常见用法示例:
dayjs('2018-08-08') // 解析
dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // 格式化展示
dayjs().set('month', 3).month() // 读取与设置
dayjs().add(1, 'year') // 日期计算
dayjs().isBefore(dayjs()) // 比较查询
链式调用同样自然:
dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
国际化与插件
Day.js 支持多语言,但默认不会打包进构建产物,需要按需引入:
import 'dayjs/locale/es' // 按需加载
dayjs.locale('es') // 全局使用西班牙语
dayjs('2018-05-05').locale('zh-cn').format() // 单实例使用简体中文
插件是独立模块,用于扩展功能,同样按需加载:
import advancedFormat from 'dayjs/plugin/advancedFormat'
dayjs.extend(advancedFormat)
dayjs().format('Q Do k kk X x')
适用与注意
Day.js 适合大多数前端日期格式化、计算与国际化场景,尤其适合对包体积敏感的项目。若涉及复杂时区、时长处理等需求,需要额外引入对应插件;从 Moment.js 迁移时,建议对边缘行为做回归测试。
项目采用 MIT 协议开源,官网 day.js.org 提供完整 API 文档与多语言版本。
评论
- 暂无评论,来写第一条吧。