जावास्क्रिप्ट (Node.js) में तिथियों के साथ कार्य करना: लोकप्रिय लाइब्रेरी का अवलोकन
\n\nतिथियों और समय के साथ कार्य करना वेब डेवलपमेंट में सबसे सामान्य कार्यों में से एक है। जावास्क्रिप्ट (Node.js) में अंतर्निहित Date ऑब्जेक्ट बुनियादी क्षमताएँ प्रदान करता है, लेकिन अक्सर यह असुविधाजनक और सीमित होता है: सुविधाजनक फ़ॉर्मेटिंग, पार्सिंग, समय क्षेत्रों के साथ हेरफेर और तिथियों के बीच अंतर का अभाव। सौभाग्य से, कई परिपक्व लाइब्रेरी हैं जो इन समस्याओं का समाधान करती हैं। इस लेख में, हम Node.js में तिथियों के साथ कार्य करने के लिए चार सबसे लोकप्रिय उपकरणों पर विचार करेंगे।
1. Moment.js — क्लासिक (लेकिन कुछ आपत्तियों के साथ)
\nMoment.js लंबे समय तक जावास्क्रिप्ट में तिथियों के साथ कार्य करने का डी-फैक्टो मानक था। यह पार्सिंग, सत्यापन, फ़ॉर्मेटिंग और तिथियों में हेरफेर के लिए एक समृद्ध API प्रदान करता है।
\n\nस्थापना:
\nnpm install moment\n\nउपयोग का उदाहरण:
\nconst moment = require('moment');\n\n// वर्तमान तिथि और समय\nconst now = moment();\nconsole.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2025-03-21 14:30:00\n\n// स्ट्रिंग का पार्सिंग\nconst date = moment('2025-12-25', 'YYYY-MM-DD');\nconsole.log(date.format('dddd, MMMM Do YYYY')); // Thursday, December 25th 2025\n\n// हेरफेर\nconst future = moment().add(7, 'days').subtract(2, 'hours');\nconsole.log(future.fromNow()); // "in 6 days"\n\n// तिथियों के बीच अंतर\nconst a = moment('2025-01-01');\nconst b = moment('2025-03-21');\nconsole.log(b.diff(a, 'days')); // 79\n\n\nलाभ: विशाल समुदाय, विस्तृत दस्तावेज़ीकरण, अनेक प्लगइन्स (समय क्षेत्रों के साथ कार्य, स्थानीयकरण)।
\nनुकसान: लाइब्रेरी पुरानी हो चुकी है (समर्थन मोड), बड़ा आकार (~230 KB), उत्परिवर्ती विधियाँ (मूल ऑब्जेक्ट को बदलती हैं)। डेवलपर्स आधुनिक विकल्पों का उपयोग करने की सलाह देते हैं।
\n\n2. date-fns — मॉड्यूलर और कार्यात्मक दृष्टिकोण
\ndate-fns एक आधुनिक लाइब्रेरी है जो कार्यात्मक प्रोग्रामिंग के सिद्धांतों पर बनी है। प्रत्येक फ़ंक्शन एक अलग मॉड्यूल है, जो केवल आवश्यक भागों को जोड़ने और बंडल आकार को कम करने की अनुमति देता है।
\n\nस्थापना:
\nnpm install date-fns\n\nउपयोग का उदाहरण:
\nconst { format, addDays, subHours, differenceInDays, parseISO } = require('date-fns');\n\n// फ़ॉर्मेटिंग\nconst now = new Date();\nconsole.log(format(now, 'yyyy-MM-dd HH:mm:ss')); // 2025-03-21 14:30:00\n\n// हेरफेर (अपरिवर्तनीय — एक नया ऑब्जेक्ट बनाता है)\nconst future = addDays(now, 7);\nconst adjusted = subHours(future, 2);\nconsole.log(format(adjusted, 'dd.MM.yyyy')); // 28.03.2025\n\n// अंतर\nconst start = parseISO('2025-01-01');\nconst end = new Date();\nconsole.log(differenceInDays(end, start)); // 79\n\n// स्थानीयकरण (हिंदी)\nconst { hi } = require('date-fns/locale');\nconsole.log(format(now, 'PPPP', { locale: hi })); // "शुक्रवार, 21 मार्च 2025" (अनुमानित)\n\n\nलाभ: मॉड्यूलरिटी, अपरिवर्तनीयता (मूल ऑब्जेक्ट नहीं बदलता), TypeScript समर्थन, उत्कृष्ट दस्तावेज़ीकरण।
\nनुकसान: Node.js 14+ की आवश्यकता है, समय क्षेत्रों का अंतर्निहित समर्थन नहीं है (date-fns-tz की आवश्यकता है)।
3. Day.js — Moment.js का हल्का और तेज़ विकल्प
\nDay.js एक न्यूनतम लाइब्रेरी (केवल 2 KB) है, जिसका API लगभग पूरी तरह से Moment.js के साथ संगत है। यह आदर्श है यदि आपको कोड को फिर से लिखे बिना Moment.js को बदलने की आवश्यकता है।
\n\nस्थापना:
\nnpm install dayjs\n\nउपयोग का उदाहरण:
\nconst dayjs = require('dayjs');\nconst utc = require('dayjs/plugin/utc');\nconst relativeTime = require('dayjs/plugin/relativeTime');\n\ndayjs.extend(utc);\ndayjs.extend(relativeTime);\n\n// मूल उपयोग (Moment की तरह)\nconst now = dayjs();\nconsole.log(now