TypeScript में तिथियों के साथ कार्य: सर्वश्रेष्ठ लाइब्रेरीज़ का अवलोकन
\n\nTypeScript, JavaScript पर एक सख्ती से टाइप की गई परत होने के नाते, मूल Date में निहित तिथियों के साथ कार्य की सभी समस्याओं को विरासत में लेता है - गैर-सहज ज्ञान युक्त API, परिवर्तनशीलता, समय क्षेत्र और पार्सिंग की समस्याएं। सौभाग्य से, TypeScript पारिस्थितिकी तंत्र कई शक्तिशाली लाइब्रेरीज़ प्रदान करता है जो इन समस्याओं का समाधान करती हैं। इस लेख में, हम तीन सबसे लोकप्रिय उपकरणों पर विचार करेंगे: date-fns, Luxon और Day.js, उनकी क्षमताओं की तुलना करेंगे और व्यावहारिक कोड उदाहरण प्रस्तुत करेंगे।
1. date-fns — मॉड्यूलर और कार्यात्मक
\n\ndate-fns एक लाइब्रेरी है जो कार्यात्मक प्रोग्रामिंग के सिद्धांतों पर बनी है। इसमें कई स्वतंत्र फ़ंक्शन शामिल हैं, जो आपको केवल वही आयात करने की अनुमति देते हैं जिसकी आवश्यकता है, और बंडल को फुलाए नहीं। यह मूल Date ऑब्जेक्ट के साथ काम करता है, जो एकीकरण को सरल बनाता है।
मुख्य विशेषताएं:
\n- \n
- शुद्ध फ़ंक्शन: प्रत्येक फ़ंक्शन मूल ऑब्जेक्ट को बदले बिना एक नया ऑब्जेक्ट लौटाता है। \n
- मॉड्यूलरिटी: केवल आवश्यक फ़ंक्शन आयात करें (उदाहरण के लिए,
import { format, addDays } from 'date-fns')। \n - लोकेल समर्थन: रूसी सहित 50 से अधिक भाषाओं के लिए अंतर्निहित समर्थन। \n
- TypeScript: बॉक्स से बाहर उत्कृष्ट टाइपिंग। \n
date-fns के साथ कोड उदाहरण
\n\nस्थापना:
\nnpm install date-fns\n\nतिथि स्वरूपण:
\nimport { format } from 'date-fns';\nimport { ru } from 'date-fns/locale';\n\nconst date = new Date(2024, 11, 25); // 25 दिसंबर 2024\nconst formatted = format(date, 'dd MMMM yyyy', { locale: ru });\nconsole.log(formatted); // "25 декабря 2024"\n\nतिथियों के साथ हेरफेर:
\nimport { addDays, subMonths, differenceInDays } from 'date-fns';\n\nconst today = new Date();\nconst future = addDays(today, 10);\nconst past = subMonths(today, 3);\nconst diff = differenceInDays(future, past);\nconsole.log(`अंतर: ${diff} दिन`);\n\nतिथियों की तुलना:
\nimport { isBefore, isAfter, isEqual } from 'date-fns';\n\nconst date1 = new Date(2024, 0, 1);\nconst date2 = new Date(2024, 6, 1);\nconsole.log(isBefore(date1, date2)); // true\n\n2. Luxon — शक्तिशाली और आधुनिक
\n\nLuxon Moment.js के लेखकों में से एक की लाइब्रेरी है, जो इसकी कमियों को दूर करने के लिए बनाई गई है। Luxon अपने स्वयं के अपरिवर्तनीय ऑब्जेक्ट (DateTime, Duration) का उपयोग करता है, न कि मूल Date का। यह इसे समय क्षेत्रों और अंतरालों के साथ काम करने के लिए विशेष रूप से सुविधाजनक बनाता है।
मुख्य विशेषताएं:
\n- \n
- अपरिवर्तनीयता: सभी विधियाँ नए उदाहरण लौटाती हैं। \n
- अंतर्निहित समय क्षेत्र समर्थन: बिना अतिरिक्त प्लगइन के। \n
- अंतर्राष्ट्रीयकरण: Intl API पर आधारित स्थानीयकरण। \n
- अंतराल और अवधियों के साथ कार्य: समय अंतराल की गणना के लिए सुविधाजनक विधियाँ। \n
Luxon के साथ कोड उदाहरण
\n\nस्थापना:
\nnpm install luxon\n\nतिथि बनाना और स्वरूपण:
\nimport { DateTime } from 'luxon';\n\nconst dt = DateTime.fromISO('2024-12-25', { zone: 'Europe/Moscow' });\nconsole.log(dt.toFormat('dd.MM.yyyy HH:mm')); // "25.12.2024 00:00"\n\n// स्थानीयकृत आउटपुट\nconsole.log(dt.setLocale('ru').toFormat('d MMMM yyyy')); // "25 декабря 2024"\n\nसमय क्षेत्रों के साथ कार्य:
\nconst nyTime = DateTime.now().setZone('America/New_York');\nconst moscowTime = nyTime.setZone('Europe/Moscow');\nconsole.log(`न्यूयॉर्क में: ${nyTime.toFormat('HH:mm')}, मास्को में: ${moscowTime.toFormat('HH:mm')}`);\n\nअवधियाँ और अंतराल:
\nimport { Duration, Interval } from 'luxon';\n\nconst dur = Durati