⏰Day.js 2kB超輕量時間庫 和Moment.js一樣的API

renke發表於2021-09-09

圖片描述

Screen Shot 2018-04-24 at 10.10.10 AM.png

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');
  • 和 Moment.js 相同的 API 和用法

  • 不可變資料 (Immutable)

  • 支援鏈式操作 (Chainable)

  • 僅 2kb 大小的微型庫

  • 全瀏覽器相容

Day.js 雖然僅有 2kb 大小,但是功能一點都沒有閹割。包含了時間處理的全部常用方法。

文件地址 (中文)

喜歡可以給個star鼓勵一下嗎


如果您的專案裡沒有其他國家語言本地化的需求,那想縮小打包體積,提升開發體驗只需要 replace(/moment/g, 'dayjs') 全域性替換一下。就能從 Moment.js + locals 200kb 減小成 dayjs 2kb的體積。所有的API呼叫都保持不變,無需修改。

來感受一下 Dayjs 的語法吧,是不是很看起來親切呢  (沒錯 這就是 moment 的語法嘛)

建立

dayjs() // 當前時間dayjs('1995-12-25') // 1995-12-25dayjs(Date.now() - 24 * 60 * 60 * 1000) // 昨天

格式化

dayjs().format('YYYY年MM月DD日 HH:mm:ss') // 2018年08月08日 00:00:00dayjs().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哦



作者:朱昆iamkuncom
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2814198/,如需轉載,請註明出處,否則將追究法律責任。

相關文章