ホームページ > 記事 > ウェブフロントエンド > Javascript での日付の操作: new Date() vs Day.js vs Moment.js
目次を読むには、元の投稿 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 での日付操作によく使用される 2 つのライブラリです。どちらも同じ目的を果たしますが、パフォーマンス、機能、使いやすさの点で明確な違いがあります。この比較は、どのライブラリがプロジェクトにより適しているかを判断するのに役立ちます。
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 中国語 Web サイトの他の関連記事を参照してください。