时间库

701 阅读2分钟

moment、dayjs、date-fns 是三个较为广泛使用的时间库。

moment

简介

官网:momentjs.cn/

dayjs

简介

中文网:dayjs.fenxianglu.cn/ 一个轻量的处理时间和日期的 JavaScript 库

date-fns

简介

date-fns 是一个现代的 JavaScript 日期工具类库,提供了最全面、最简单和一致的工具集,用于在浏览器和 Node.js 中操作 JavaScript 日期。

功能特性

  • 模块化:根据需求选择需要引用的模块
  • 不可变:date-fns 使用纯函数构建,并且始终返回一个新的日期实例,而不是更改传递的日期实例。它允许防止错误并跳过长时间的调试会话
  • 可信赖:遵循语义版本,始终向后兼容
  • 快速:轻量快速,为用户提供最佳的使用体验
  • TypeScript & Flow:date-fns 同时支持 Flow 和 TypeScript

示例

import {format, compareAsc} from 'date-fns/esm'
format(new Date(2014111), 'MM/dd/yyyy')
//=> '02/11/2014'
const dates = [new Date(199562), new Date(1987111), new Date(1989610)]
dates.sort(compareAsc)
//=> [
//   Wed Feb 11 1987 00:00:00,
//   Mon Jul 10 1989 00:00:00,
//   Sun Jul 02 1995 00:00:00
// ]

总结

moment、dayjs、date-fns三个库都能满足常见的需求,但是存在如下特点:

  • moment 的功能强大但是体积也最大,moment.min.js 的体积为51K,dayjs.min.js 体积为7K,date-fns由于是模块化加载,体积可以最小化;
  • dayjs 和 moment 的接口几乎完全一致,相互切换的学习成本极低,date-fns接口风格差异较大;

从功能上看,dayjs、date-fns 基本上可以替代moment,同时可以大幅减小app的体积。如果考虑的兼容性,可以优先考虑dayjs,喜欢模块化的朋友可以考虑date-fns。