js里格式化时间这件事情,自己写个方法也没问题,但是如果有个库已经很全面的帮我们实现了,那干嘛不用????于是有了Moment.js库,十分强大,压缩版20K左右,还可以,当然如果有个比它小且功能和Moment.js一样强大的库,那就更好了~~~

Dayjs 一个只有2KB的js时间格式化库。

安装

Dayis 同样支持两种安装方式,CDN和NPM。

CDN

通过CDN链接直接引用,当然你也可以直接从服务器路径引用js文件。

<script src="https://unpkg.com/dayjs"></script>

<script src="/xxx/dayjs.js"></script>

这是最直接的方法。

NPM

当然你也可以用 NPM 进行安装和管理,只需要如下代码

npm install dayjs --save

第一次使用

无论哪种安装方法,最后都是轨道 dayjs() 方法上,使用它可以对时间进行各种各样的格式化操作,比如

dayjs().format()

就可以得到当前的时间。

接口

Dayjs支持许多的接口,用来解析、处理、校验、增减、展示时间和日期。值得一说的是,Dayjs 并没有改变或覆盖 Javascript 原生的 Date.prototype, 而是创造了一个全新的包含 Javascript Date 对象的 Dayjs 的对象。

Dayjs 对象是不可变的, 所有的 API 操作都将返回一个新的 Dayjs 对象。

解析

通过Dayjs我们可以对各种时间值进行格式化,得到不同的结果,一一说明。

当前时间 直接运行 dayjs(),得到包含当前时间和日期的 Dayjs 对象。

dayjs()

从上图看出,dayjs()得到的对象有 $d、$M等属性,你甚至可以直接使用它们得到时间的某些部分,比如

dayjs().$M

不过Dayjs提供了更多友好的api方法来获取这些变量的值,并且支持国际化,因此你并不需要直接使用上图的变量。

时间字符串 可以解析传入的一个标准的ISO 8601时间字符串。 ISO 8601 是ISO组织对日期和时间的表示方法,简单可以查看如下链接。

https://baike.baidu.com/item/ISO%208601/3910715

比如在ISO 8601中2019-04-10和20190410都是表示2019年4月10日的合法何时,因此将他们做为参数传递给dayjs()得到的对象是一样的。

dayjs("20190410")
dayjs("2019-04-10")

结果如图

符合ISO 8601,这是要记住的。

Date 对象 我们还可以直接为dayjs传递一个javascript Date 对象。

dayjs(new Date(2019, 04, 10))

Unix 时间戳 (毫秒 13 位数字) 我想这是很多后端人员喜欢的,尤其是phper。

// php
$time =(int)(microtime(true)*1000);

传给前台js代码

dayjs(<?= $time;?>)

当然你也可以为dayjs传递一个10位的时间戳(秒)。

dayjs(1318781876)

自己定义格式 当然,dayjs还支持自定义格式,这个需要插件支持,后面会讲到。

上面是dayjs可以解析的参数格式,接下来我们说说dayjs的验证功能,这主要是验证一个日期的合法性。

我们使用isValid方法,比如瞎用

dayjs("abc").isValid()

结果是布尔型的false,因为abc并非一个有效的时间。

获取和设置

在上面我们知道了dayjs获取对象过程中对参数的要求以及验证操作,接下来我们说说当获取到Dayjs对象后,如何获取和设置对应的时间。