AX 爱鲜报

Day.js

一个仅 2kB 的轻量级 JavaScript 日期时间库,API 与 Moment.js 高度兼容,支持不可变、链式调用、国际化与按需插件,是现代前端项目中替代 Moment.js 的主流选择。

爱鲜报评分

0.0

0 人评分

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 文档与多语言版本。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。