⏰Day.js 2kB超轻量时间库 和Moment.js同样的API

Day.js


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

若是能有一个和 Moment.js 同样语法,同样功能,又轻量的库该多好!github

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');
  • ? 和 Moment.js 相同的 API 和用法
  • ? 不可变数据 (Immutable)
  • ? 支持链式操做 (Chainable)
  • ? 仅 2kb 大小的微型库
  • ? 全浏览器兼容

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

文档地址 (中文)?

喜欢能够给个?star?鼓励一下吗
https://github.com/xx45/dayjs
设计


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

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

建立

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/dayjsip

相关文章
相关标签/搜索