⏰Day.js 2KB 轻量时间库 和 Moment.js 一样的 API

2018-04-27 13:45:31 +08:00
 iamkun

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

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

Day.js 是一个轻量的 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样. 如果你曾经用过 Moment.js, 那么你已经知道如何使用 Day.js

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

dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');

Day.js 虽然仅有 2kb 大小,但功能上也包含了时间处理的全部常用方法。


文档地址 (中文)💖

喜欢可以给个💖star💖鼓励一下吗 https://github.com/xx45/dayjs



如果您的项目里没有其他国家语言本地化的需求,那想缩小打包体积,提升开发体验只需要 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() // 闰年

issue and pr's welcome

欢迎来 issue 和 pr 哦 https://github.com/xx45/dayjs

6113 次点击
所在节点    分享发现
27 条回复
iamkun
2018-04-30 21:32:10 +08:00
@phoenixlzx 哇 TJ 大神吗? 赶快去看看
zazzaz
2018-05-01 20:56:58 +08:00
@phoenixlzx 火前留名 tj star 的项目 过一万星星估计已经不远了
zj9495
2018-05-09 12:02:47 +08:00
iamkun
2018-05-09 13:30:36 +08:00
@zj9495 我们正在做一套插件系统 应该这几天就上线 unix 和 utc 会已一个插件的形式支持的
iamkun
2018-05-09 13:34:07 +08:00
@zj9495 目前可以先这么用 dayjs(unix * 1000) 传入毫秒是可以支持的
WildCat
2018-05-11 23:57:52 +08:00
楼主在 Brighton ?
asahui
2018-06-19 23:36:32 +08:00
能介绍一下如何做到比 moment 小这么多吗,精简了哪些地方

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/450369

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX