偶然遇到一些需求,需要计算时间差或者处理时间,格式化,转换等等。

那大名鼎鼎的两个时间库不多说了,在标题,非常强大。

Day.js

Day.js官网

Day.js比较轻量,所以在我刚接触需要处理时间的需求中,我首先选择了Day.js,但是我还是用着不是很舒服,可能语法问题,也可以体验感问题,反正就是不太喜欢。

但是这个库无疑非常优秀,为什么呢?

我们上面提到了Moment.js,那这两个库比如是有竞争选择。

Moment.js也是占用资源比Day.js大了些许了。

 import dayjs from "dayjs";
 
 dayjs(new Date(2021, 10, 1)).diff(new Date(2021, 9, 17), "day"); 

稍微看看语法,Day.js还要许许多多的功能呢。

比如,想获取时间差,可以用Day.js的插件RelativeTime

 import dayjs from "dayjs";
 import relativeTime from "dayjs/plugin/relativeTime";
 
 dayjs.extend(relativeTime);
 
 dayjs("2022-09-16 13:28:55").fromNow();

Moment.js

Moment.js官网

是的,我最后还是喜欢选择Moment.js,语法写起来也顺手,虽然占用资源较大,但是功能也是比Day.js多了许多。

首先看看官网界面:

给人的感觉就是强大、精准、数据量也是非常之多。

语法我也是比较喜欢的,比如格式化时间:

 moment().format('MMMM Do YYYY, h:mm:ss a'); // 八月 9日 2022, 2:34:03 下午
 moment().format('dddd');                    // 星期二
 moment().format("MMM Do YY");               // 8月 9日 22
 moment().format('YYYY [escaped] YYYY');     // 2022 escaped 2022
 moment().format();                          // 2022-08-09T14:34:03+08:00

还要太多功能我就不一一演示了,反正非常强大就对了,但Day.js也不弱。

对比一下

bundlephobia.com也是提供了资源占用的ApiDay.js如下:

Moment.js如下:

这样一对比,所以说,day.js是更现代并且更轻量化,更加容易扩展的一个库,但是需要强大的时间处理,我还是喜欢Moment.js

Day.js它可以利用TreeShaking,并且通过插件的方式来进行扩展,我们可以根据自己的需求去引入插件,所以我们最后只会引入我们需要的东西。

至于Moment.js支不支持TreeShaking,我记得好像是不支持的吧,应该、大概、或许...

最后修改:2022 年 08 月 09 日
如果觉得我的文章对你有用,请随意赞赏