date-fns:JavaScript 日期处理的实用工具库

date-fns 是一个 JavaScript 日期处理工具库,目前在 GitHub 上获得了 36,576 个 Star。

正文顶部截图

前端开发中日期处理是高频需求。格式化、比较、加减运算、时区转换,每个项目都会用到。date-fns 提供了 200 多个函数,覆盖了绝大部分日期操作场景。

README区域截图

核心特性

  • 模块化:按需引入,配合 webpack、Rollup 等打包工具支持 tree-shaking
  • 原生 Date:直接使用 JavaScript 原生 Date 对象,不扩展核心对象
  • 纯函数:所有函数都是纯函数,每次调用返回新的 Date 实例
  • TypeScript:100% TypeScript 编写,类型定义完整
  • 国际化:内置数十种语言的本地化支持,按需加载即可

有人把 date-fns 比作日期领域的 Lodash,这个说法比较贴切。

基本用法

安装:

npm install date-fns --save

格式化日期:

import { format } from "date-fns";

format(new Date(2014, 1, 11), "yyyy-MM-dd");
//=> '2014-02-11'

日期排序:

import { compareAsc } from "date-fns";

const dates = [
  new Date(1995, 6, 2),
  new Date(1987, 1, 11),
  new Date(1989, 6, 10),
];
dates.sort(compareAsc);

v4.0 更新

date-fns 近期发布了 v4.0,新增原生时区支持。之前处理时区需要依赖第三方库,现在可以在函数中直接指定时区参数,减少了额外的依赖。

与 Moment.js 的对比

Moment.js 是早期 JavaScript 日期处理的主流方案,但不可变性问题和包体积一直被开发者吐槽。date-fns 采用函数式设计,每个操作独立,打包后体积可控。新项目可以直接选用,老项目也能逐步迁移。


date-fns 适合需要处理日期逻辑但不想引入重量级依赖的场景。200 多个函数覆盖了日常开发中的常见需求,模块化设计在打包体积上也比较友好。

需要处理日期逻辑但不想引入重量级依赖的场景。200 多个函数覆盖了日常开发中的常见需求,模块化设计在打包体积上也比较友好。

更多推荐