जावास्क्रिप्ट में दिनांक और समय के साथ कार्य करना: उन्नत विधियाँ और लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: मानक Date() अपर्याप्त क्यों है?

\n\n

जावास्क्रिप्ट में अंतर्निहित Date ऑब्जेक्ट एक शक्तिशाली लेकिन हमेशा सुविधाजनक उपकरण नहीं है। Node.js पर जटिल एप्लिकेशन (जैसे टास्क शेड्यूलर, एनालिटिक्स सिस्टम या वित्तीय सेवाएँ) विकसित करते समय, डेवलपर्स को कई समस्याओं का सामना करना पड़ता है:

\n\n
    \n
  • परिवर्तनशीलता: setMonth() जैसी विधियाँ मूल ऑब्जेक्ट को बदल देती हैं।
  • \n
  • समय क्षेत्रों का सीमित समर्थन: Date केवल स्थानीय समय और UTC के साथ काम करता है।
  • \n
  • स्वरूपण की जटिलता: strftime का कोई अंतर्निहित विकल्प नहीं है।
  • \n
  • स्ट्रिंग पार्सिंग: new Date("2023-13-01") कोई त्रुटि नहीं देगा, बल्कि "2024-01-01" बनाएगा।
  • \n
\n\n

इस लेख में, हम Node.js में दिनांक और समय के साथ काम करने के उन्नत तरीकों पर चर्चा करेंगे जो इन समस्याओं से बचने और अधिक विश्वसनीय कोड लिखने में मदद करेंगे।

\n\n

1. Intl.DateTimeFormat: बाहरी निर्भरता के बिना स्वरूपण

\n\n

आधुनिक जावास्क्रिप्ट (ES6+) अंतर्राष्ट्रीयकरण API Intl.DateTimeFormat प्रदान करता है। यह एक शक्तिशाली उपकरण है जो तृतीय-पक्ष लाइब्रेरीज़ को शामिल किए बिना किसी भी लोकेल के लिए दिनांक और समय को स्वरूपित करने की अनुमति देता है।

\n\n

बुनियादी उपयोग

\n\n
const date = new Date('2024-03-15T14:30:00Z');\n\n// रूसी लोकेल के लिए स्वरूपण\nconst formatterRU = new Intl.DateTimeFormat('ru-RU', {\n    year: 'numeric',\n    month: 'long',\n    day: 'numeric',\n    weekday: 'long',\n    hour: '2-digit',\n    minute: '2-digit'\n});\n\nconsole.log(formatterRU.format(date));\n// "пятница, 15 марта 2024 г., 17:30"
\n\n

उन्नत विकल्प: समय क्षेत्र और सापेक्ष समय

\n\n
// समय क्षेत्र को ध्यान में रखते हुए स्वरूपण\nconst formatterTZ = new Intl.DateTimeFormat('en-US', {\n    timeZone: 'America/New_York',\n    dateStyle: 'full',\n    timeStyle: 'short'\n});\nconsole.log(formatterTZ.format(date));\n// "Friday, March 15, 2024 at 10:30 AM"\n\n// सापेक्ष स्वरूपण (Intl.RelativeTimeFormat)\nconst rtf = new Intl.RelativeTimeFormat('ru', { numeric: 'auto' });\nconsole.log(rtf.format(-5, 'day')); // "5 дней назад"\nconsole.log(rtf.format(2, 'month')); // "через 2 месяца"
\n\n

यह दृष्टिकोण तब आदर्श होता है जब आप अनावश्यक निर्भरता से बचना चाहते हैं, लेकिन उपयोगकर्ता इंटरफ़ेस के लिए लचीले स्वरूपण की आवश्यकता होती है।

\n\n

2. date-fns लाइब्रेरी: मॉड्यूलरिटी और कार्यक्षमता

\n\n

date-fns एक आधुनिक लाइब्रेरी है जो कार्यात्मक प्रोग्रामिंग के सिद्धांतों पर बनी है। इसका मुख्य लाभ मॉड्यूलरिटी है: आप केवल उन फ़ंक्शन को आयात करते हैं जिनकी आपको आवश्यकता है, जिससे बंडल का आकार काफी कम हो जाता है।

\n\n

स्थापना और बुनियादी उदाहरण

\n\n
// स्थापना: npm install date-fns\nimport { format, addDays, subMonths, differenceInDays, isWeekend } from 'date-fns';\nimport { ru } from 'date-fns/locale';\n\nconst today = new Date();\n\n// लोकेल के साथ स्वरूपण\nconsole.log(format(today, 'dd MMMM yyyy, EEEE', { locale: ru }));\n// "15 марта 2024, пятница"\n\n// दिनांक अंकगणित\nconst nextWeek = addDays(today, 7);\nconst lastMonth = subMonths(today, 1);\n\n// दिनांकों के बीच अंतर\nconst diff = differenceInDays(nextWeek, today);\nconsole.log(diff); // 7\n\n// सप्ताहांत की जाँच\nconsole.log(isWeekend(today)); // true या false
\n\n

जटिल परिदृश्य: तुलना और मान्यकरण

\n\n
import { parse, isValid, isBefore, isAfter, startOfMonth, endOfMonth } from 'date-fns';\n\n// सुरक्षित पार्सिंग\nconst parsed = parse('2024-13-01', 'yyyy-MM-dd', new Date());\nconsole.log(isValid(parsed)); // false — अमान्य दिनांक\n\n// श्रेणियों के साथ कार्य\nconst start = startOfMonth(new Date(2024, 2, 1)); // 1 मार्च\nconst end = endOfMonth(new Date(2024, 2, 1));     // 31 मार्च\n\nconst targetDate = new Date(2024, 2, 15);\nif (isAfter(targetDate, start) && isBefore(targetDate, end)) {\n    console.log('दिनांक मार्च 2024 में है');\n}
\n\n

date-fns

ब्लॉग

पुस्तक अनुशंसाएँ