暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Day.js 2KB超轻量时间库

纪鑫鑫 2021-06-28
307

Moment.js 是一个大而全的 JS 时间库,很大地方便了我们处理日期和时间。但是 Moment.js太重了(200k+ with locals),可能一般项目也只使用到了她几个常用的API。虽然社区也有几个轻量的时间库,要想迁移过去又会增加新的学习和迁移成本。

如果能有一个和 Moment.js 一样语法,一样功能,又轻量的库该多好!Day.js应运而生!

为什么使用 Day.js ?

2kB

下载、解析和执行更少的 JavaScript,为您的代码留出更多时间。

简易

Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样。

如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js 。

不可变的

所有的 API 操作都将返回一个新的 Dayjs 对象。

这种设计能避免 bug 产生,节约调试时间。

国际化

Day.js 对国际化支持良好。但除非手动加载,多国语言默认是不会被打包到工程里的

Day.js
 基本用法如下,相同的API,相同的链式操作。

    dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
    • 和 Moment.js 相同的 API 和用法

    • 不可变数据 (Immutable)

    • 支持链式操作 (Chainable)

    • 仅 2kb 大小的微型库

    • 全浏览器兼容

    Day.js 虽然仅有 2kb 大小,但是功能一点都没有阉割。包含了时间处理的全部常用方法。

    如果您的项目里没有其他国家语言本地化的需求,那想缩小打包体积,提升开发体验只需要 replace(/moment/g, 'dayjs')
     全局替换一下。就能从 Moment.js + locals
     200kb 减小成 dayjs
     2kb的体积。所有的API调用都保持不变,无需修改。

    来感受一下 Dayjs
     的语法吧,是不是很看起来亲切呢 (没错 这就是 moment 的语法嘛)

    创建

      dayjs() // 当前时间 dayjs('1995-12-25') // 1995-12-25 dayjs(Date.now() - 24 * 60 * 60 * 1000) // 昨天

      格式化

        dayjs().format('YYYY年MM月DD日 HH:mm:ss') // 2018年08月08日 00:00:00 dayjs().format('[YYYY]') // "[2018]"。[] 里的会原样输出。

        操作

          dayjs().add(7, 'days') // 之后的第7天 dayjs().subtract(1, 'months') // 上个月 dayjs().startOf('months') // 获取一月初 dayjs().endOf('year') // 获取一年年末

          查询

            dayjs('2010-10-20').isBefore('2010-10-21') // 早于 dayjs('2010-10-20').isAfter('2010-10-19') // 晚于 dayjs().isLeapYear() // 闰年

            以上只是部分语法说明,具体开发文档可以访问官网了解:https://day.js.org

            文章转载自纪鑫鑫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论