日期和時間是 web 開發中常見的需求。在這篇文章中,我們將會探討兩個流行的 JavaScript 日期和時間庫:Day.js 和 Moment.js,並比較它們的優缺點。

簡介

  • Day.js:一個輕量級的 JavaScript 日期和時間庫,設計為 Moment.js 的替代方案。
  • Moment.js:一個廣泛使用的 JavaScript 日期和時間庫,擁有豐富的功能。

安裝

Day.js

npm install dayjs

Moment.js

npm install moment

包大小

  • Day.js:約 2KB(gzip),提供按需引入插件的能力。
  • Moment.js:約 60KB+(gzip),包含所有功能。

API

Day.js 和 Moment.js 的 API 非常相似,這使得從一個庫轉換到另一個變得相對容易。

國際化

  • Day.js:需要單獨引入每個語言包。
  • Moment.js:內置了多種語言,但這也增加了包的大小。

不變性

兩者都是不可變的,意味著所有的操作(如加或減天數)都會返回一個新的日期對象。

插件

  • Day.js:提供插件架構,可以按需引入。
  • Moment.js:所有功能都包括在主包中。

基本用法示例

Day.js

import dayjs from 'dayjs';

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

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

// 操作
const future = now.add(1, 'year');
const past = now.subtract(1, 'year');

// 相對時間
const relativeTime = dayjs('2023-10-25').fromNow();

Moment.js

import moment from 'moment';

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

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

// 操作
const future = now.add(1, 'year');
const past = now.subtract(1, 'year');

// 相對時間
const relativeTime = moment('2023-10-25').fromNow();

結論

選擇 Day.js 還是 Moment.js 主要取決於你的需求:

  • 如果你需要一個輕量級的庫並且只需要基本的日期和時間操作,Day.js 是一個很好的選擇。
  • 如果你需要更多高級的功能和內置的國際化支持,則 Moment.js 可能更適合你。

希望這篇文章能幫助你做出更明智的選擇!

最後修改日期: 2023 年 10 月 26 日

作者