Skip to content

请立即停用Moment.js格式化时间,改用Day.js

可能很多朋友并不清楚,Moment.js项目早在2020年9月就宣布停更了,当然迄今为止还有大量的朋友仍在项目中安装并使用moment.js。原因无他,确实很好用。

但是不可否认的是,作为一个诞生于2011年的元老级项目,Moment.js已经有些跟不上时代的脚步了,并且开发团队在其官网也大方的承认了这一点。

所以现在我们在项目中应该更多的使用什么来格式化时间呢?

答案是:Day.js

为什么放弃Moment.js

理由很多,但是最核心的也就两条。

  1. Moment.js项目已经宣布停止更新,并且官方不再维护。

当初停更的主要原因 moment 的可变对象,也就是说任何的修改其实都在改变对象本身,而想要迭代出一个“不可变对象”的 Moment V3 在项目组团队看来是一个不可能完成的任务。

并且,现在很多库已经实现了上述操作,团队本身也没有必要再开发这样一个版本。

  1. Moment.js相较于其他库太大了

官网解释说:Moment 不能很好地与现代 “tree shaking” 算法配合使用,因此它往往会增加 Web 应用程序包的大小。再加上国际化或时区支持的话,Moment 可能会变得相当大。

为什么选择Day.js

理由主要有三:

  1. Day.js拥有与Moment.js近乎相同的API。
  2. Day.js非常小,整个包约2KB。
  3. 插件按需引入

Day.js的语法

中文文档地址 https://dayjs.uihtm.com/

安装

shell
npm install dayjs

使用

js
import dayjs from 'dayjs'

API调用

js
// 获取当前时间
var now = dayjs();

// 数据格式化
dayjs().format();
dayjs('2019-01-25').format('DD/MM/YYYY');

// 取值
dayjs().date();
dayjs().day();
dayjs().isoWeekday()

友情提示:Day.js有个坑点,刚刚遇到。

字符串的时间戳和数字时间戳在格式转换的时候得到的结果不一样,字符串时间戳返回的结果事实上是报错了,只是并未抛出异常。