https://www.npmjs.com/package/dayjs
npm install dayjs --save
在項目中難免要去處理時間和日期,所以就一定會用到 Moment.js ,Moment.js 是一個大而全的 JS 時間庫,使得我們處理時間和日期變得簡便,但是 Moment.js 太重了(大約 200k +),而對於我們的項目我們可能只用到了其中的幾個 API 而已,這時如果沒有其它語言本地化的需求我們就可以使用 Day.js ,之所以使用它,僅僅是因為它有着與 Moment.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 大小,但是功能一點也沒有閹割,包含了事件處理的全部常用方法
文檔地址
https://github.com/xx45/dayjs
原項目中已有 moment.js
如果項目里沒有其它國家語言本地化的需求,那沒想縮小打包體積,提升開發體驗只需要 replace(/moment/g, 'dayjs')全局替換一下,就能夠減小體積並且所有 API 保持不變,無需修改,下面來看一些栗子
創建
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() // 閏年