npmdayjs:讓 JavaScript 時間處理更簡單

npm dayjs 是一個輕量級的 JavaScript 庫,它專註於時間處理,能夠讓開發者在處理時間的過程中更加方便快捷。

一、簡介

在日常的開發中,我們經常需要對時間進行各種處理,例如格式化輸出、計算時間之間的差值、獲取當前時間等等。然而,JavaScript 的原生 Date 對象提供的方法比較有限,而且很難處理常見的時間格式。因此,社區中湧現了很多針對時間處理的庫,而 Day.js 就是其中的一員。

Day.js 是一個輕量級的 JavaScript 時間庫,它支持鏈式操作、自定義插件和 I18n。它採用了和 Moment.js 相似的 API 設計,但是 Day.js 僅有 2KB 左右的大小,是後者的 1/20 左右。

二、安裝和使用 Day.js

Day.js 通過 npm 安裝:

npm install dayjs

然後我們就可以在項目中使用 Day.js 了:

import dayjs from 'dayjs'

// 獲取當前時間
const now = dayjs()

// 格式化輸出
const formatted = now.format('YYYY-MM-DD HH:mm:ss')

console.log(formatted) // 2022-02-22 12:34:56

Day.js 的 API 設計非常友好,例如獲取當前時間:

const now = dayjs()

now.year() // 獲取當前年份
now.month() // 獲取當前月份(從 0 開始)
now.date() // 獲取當前月份的第幾天
now.hour() // 獲取當前小時
now.minute() // 獲取當前分鐘數
now.second() // 獲取當前秒數
now.millisecond() // 獲取當前毫秒數

三、格式化時間輸出

Day.js 的最常用功能就是格式化時間輸出了。通過 format 函數可以將時間按照指定的格式輸出。

// 創建一個時間
const time = dayjs('2022-02-22T12:34:56')

// 格式化輸出
const formatted = time.format('YYYY年MM月DD日 HH:mm:ss')

console.log(formatted) // 2022年02月22日 12:34:56

Day.js 支持的格式化參數非常豐富,包括:

  • YY:年份(後兩位)
  • YYYY:年份(四位)
  • M:月份(不補 0)
  • MM:月份(補 0)
  • D:日期(不補 0)
  • DD:日期(補 0)
  • H:小時(24 小時制、不補 0)
  • HH:小時(24 小時制、補 0)
  • h:小時(12 小時制、不補 0)
  • hh:小時(12 小時制、補 0)
  • m:分鐘(不補 0)
  • mm:分鐘(補 0)
  • s:秒鐘(不補 0)
  • ss:秒鐘(補 0)
  • SSS:毫秒
  • A:上午或下午(大寫)
  • a:上午或下午(小寫)
  • dddd:星期幾(完整的名稱)
  • ddd:星期幾(縮寫)

四、計算時間差值

Day.js 還支持計算時間之間的差值,並且可以按照一定的精度(如年、月、日、小時、分鐘等)進行輸出。

// 創建兩個時間
const start = dayjs('2022-02-22T12:34:56')
const end = dayjs('2022-02-23T14:56:23')

// 計算差值
const diff = end.diff(start, 'hour')

console.log(diff) // 26

在上面的代碼中,我們通過 diff 函數計算 start 和 end 之間的差值,並且指定了輸出單位為小時。

五、自定義插件

Day.js 支持自定義插件,通過自定義插件可以擴展 Day.js 的功能。

例如,我們可以通過一個自定義插件來獲取當前日期的 zodiac(屬相):

// 定義一個插件
dayjs.extend({
    zodiac: function () {
        const year = this.year()
        const startYear = 1900 // 起始年份
        const zodiacs = ['鼠', '牛', '虎', '兔', '龍', '蛇', '馬', '羊', '猴', '雞', '狗', '豬']
        // 通過演算法計算屬相
        return zodiacs[(year - startYear) % 12]
    }
})

// 使用自定義插件
const now = dayjs()

console.log(now.zodiac()) // 狗

六、I18n

Day.js 支持多語言環境,內置了 13 種常見的語言環境,並且可以自定義語言環境。

例如,我們可以切換語言環境,並且使用自定義的語言環境:

// 切換語言環境
dayjs.locale('zh-cn')

// 自定義語言環境
dayjs.locale({
    name: 'mylang',
    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
    weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
    monthsShort: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_')
})

const now = dayjs()

console.log(now.format('YYYY年MM月DD日 dddd', { locale: 'mylang' })) // 2022年02月22日 周二

七、總結

npm dayjs 是一個功能完善、易用性高、輕量級的 JavaScript 時間處理庫。它支持格式化輸出、計算時間差值、自定義插件和 I18n,能夠讓開發者在處理時間的過程中更加方便快捷。同時,Day.js 的大小只有約 2KB 左右,是其他類似時間處理庫大小的 1/20 左右,非常適合在前端項目中使用。

原創文章,作者:RXQLV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/335063.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RXQLV的頭像RXQLV
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:06

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • 解決docker-compose 容器時間和伺服器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與伺服器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • 想把你和時間藏起來

    如果你覺得時間過得太快,每天都過得太匆忙,那麼你是否曾經想過想把時間藏起來,慢慢享受每一個瞬間?在這篇文章中,我們將會從多個方面,詳細地闡述如何想把你和時間藏起來。 一、一些時間管…

    編程 2025-04-28
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • 計算斐波那契數列的時間複雜度解析

    斐波那契數列是一個數列,其中每個數都是前兩個數的和,第一個數和第二個數都是1。斐波那契數列的前幾項為:1,1,2,3,5,8,13,21,34,…。計算斐波那契數列常用…

    編程 2025-04-28
  • 時間戳秒級可以用int嗎

    時間戳是指從某個固定的時間點開始計算的已經過去的時間。在計算機領域,時間戳通常使用秒級或毫秒級來表示。在實際使用中,我們經常會遇到需要將時間戳轉換為整數類型的情況。那麼,時間戳秒級…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 如何在ACM競賽中優化開發時間

    ACM競賽旨在提高程序員的演算法能力和解決問題的實力,然而在比賽中優化開發時間同樣至關重要。 一、規劃賽前準備 1、提前熟悉比賽規則和題目類型,了解常見演算法、數據結構和快速編寫代碼的…

    編程 2025-04-28

發表回復

登錄後才能評論