看原始貼文 https://devaradise.com/date-in-javascript-dayjs-momentjs/ 以閱讀目錄
處理日期和時間是 JavaScript 開發中的常見任務。雖然 JavaScript 的原生 Date 物件提供了多種處理日期的方法,但在某些情況下,使用 Day.js 或 Moment.js 等外部程式庫可以簡化您的工作流程並提供更強大的解決方案。
在本文中,我們將探討可以透過 JavaScript 的本機 Date 物件解決的常見情況以及最適合由外部程式庫處理的情況。我們也會比較 Day.js 和 Moment.js,以幫助您選擇適合您需求的工具。
原生 JavaScript Date 物件提供了一系列處理日期和時間的方法。以下是一些常見的用例,其中原生 Date 物件就足夠了:
const now = new Date(); // Current date and time const specificDate = new Date('2024-07-16'); // Specific date
const now = new Date(); const year = now.getFullYear(); const month = now.getMonth() + 1; // Months are zero-indexed const day = now.getDate(); const hours = now.getHours(); const minutes = now.getMinutes(); const seconds = now.getSeconds();
const now = new Date(); now.setFullYear(2025); now.setMonth(11); // December now.setDate(25); now.setHours(10); now.setMinutes(11); now.setSeconds(12);
const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1);
const now = new Date(); const dateString = now.toDateString(); // Example: 'Tue Jul 16 2024' const timeString = now.toTimeString(); // Example: '14:12:34 GMT+0200 (Central European Summer Time)'
const parsedDate = new Date(Date.parse('2024-07-16T14:12:34Z'));
const date1 = new Date('2024-07-16'); const date2 = new Date('2024-07-17'); const isSame = date1.getTime() === date2.getTime(); // false const isBefore = date1.getTime() < date2.getTime(); // true
const dayOfWeek = now.getDay(); // 0 for Sunday, 1 for Monday, etc.
const now = new Date(); const isoDate = now.toISOString(); // 2024-07-22T11:30:59.827Z const utcDate = now.toUTCString(); // Mon, 22 Jul 2024 11:30:42 GMT
const date1 = new Date('2024-01-01'); const date2 = new Date('2024-12-31'); const differenceInTime = date2 - date1; const differenceInDays = differenceInTime / (1000 * 3600 * 24); console.log(differenceInDays);
雖然原生 Date 物件涵蓋了基本的日期操作,但某些任務可以透過 Day.js 和 Moment.js 等外部函式庫更有效地處理。以下是這些庫表現出色的一些場景:
// Day.js const Day.jsDate = Day.js().format('YYYY-MM-DD HH:mm:ss'); // Moment.js const momentDate = moment().format('YYYY-MM-DD HH:mm:ss');
// Day.js Day.js.extend(relativeTime); // require RelativeTime plugin Day.js('2024-01-01').from(Day.js('2023-01-01')); // a year ago // Moment.js moment('2024-01-01').from(moment('2023-01-01')); // a year ago
Day.js.extend(utc); Day.js.extend(timezone); Day.js('2024-07-16 14:12:34').tz('America/New_York'); // Moment.js with moment-timezone moment.tz('2024-07-16 14:12:34', 'America/New_York');
// Day.js Day.js.locale('fr'); const frenchDate = Day.js().format('LLLL'); // dimanche 15 juillet 2012 11:01 // Moment.js moment.locale('fr'); const frenchMomentDate = moment().format('LLLL'); // dimanche 15 juillet 2012 11:01
// Day.js const invalidDay.js = Day.js('invalid date'); if (!invalidDay.js.isValid()) { console.log('Invalid date'); } // Moment.js const invalidMoment = moment('invalid date'); if (!invalidMoment.isValid()) { console.log('Invalid date'); }
// Day.js with customParseFormat plugin Day.js.extend(customParseFormat); const complexDate = Day.js('05/02/69 1:02:03 PM -05:00', 'MM/DD/YY H:mm:ss A Z'); // Moment.js const complexMoment = moment('05/02/69 1:02:03 PM -05:00', 'MM/DD/YY H:mm:ss A Z');
// Day.js Day.js.extend(duration); const durationDay.js = Day.js.duration(5000); // 5 seconds console.log(durationDay.js.asMinutes()); // 0.083333... const humanizedDurationDay.js = Day.js.duration(5000).humanize(); // 'a few seconds' // Moment.js const durationMoment = moment.duration(5000); // 5 seconds console.log(durationMoment.asMinutes()); // 0.083333... const humanizedDurationMoment = moment.duration(5000).humanize(); // 'a few seconds'
Day.js 和 Moment.js 是 JavaScript 中兩個流行的日期操作庫。雖然兩者俱有相同的用途,但它們在性能、功能和可用性方面存在明顯差異。這種比較將幫助您決定哪個庫更適合您的專案。
Feature | Day.js | Moment.js |
---|---|---|
Size | ~2KB | ~70KB |
Immutability | Yes | No |
Plugin Architecture | Yes | Limited |
Feature Set | Basic (extensible via plugins) | Comprehensive |
Timezone Support | Limited (via plugins) | Extensive (Moment Timezone) |
Ecosystem | Growing | Mature |
Documentation | Good | Extensive |
Modern Syntax | Yes | No |
API Compatibility | Similar to Moment.js | N/A |
Status | Actively maintained | Deprecated |
外掛架構
功能集
生態系
API 相容性
在 JavaScript 中處理日期時,為任務選擇正確的工具至關重要。原生 JavaScript Date 物件足以完成基本的日期操作任務,但對於更進階的操作,Day.js 和 Moment.js 等程式庫提供了強大且方便的功能。
在 Day.js 和 Moment.js 之間做出選擇時,請考慮您專案的特定需求。
以上是在 Javascript 中使用日期:new Date() vs Day.js vs Moment.js的詳細內容。更多資訊請關注PHP中文網其他相關文章!