목차와 함께 읽으려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!