偶然遇到一些需求,需要计算时间差或者处理时间,格式化,转换等等。
那大名鼎鼎的两个时间库不多说了,在标题,非常强大。
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
,语法写起来也顺手,虽然占用资源较大,但是功能也是比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
也是提供了资源占用的Api
,Day.js
如下:
Moment.js
如下:
这样一对比,所以说,day.js
是更现代并且更轻量化,更加容易扩展的一个库,但是需要强大的时间处理,我还是喜欢Moment.js
。
Day.js
它可以利用TreeShaking
,并且通过插件的方式来进行扩展,我们可以根据自己的需求去引入插件,所以我们最后只会引入我们需要的东西。
至于Moment.js
支不支持TreeShaking
,我记得好像是不支持的吧,应该、大概、或许...