TypeScript में तिथियों के साथ कार्य: लोकप्रिय लाइब्रेरीज़ का अवलोकन
तिथियों और समय के साथ कार्य करना वेब डेवलपमेंट में सबसे सामान्य और साथ ही जटिल कार्यों में से एक है। JavaScript (और TypeScript) में अंतर्निहित Date ऑब्जेक्ट में कई कमियाँ हैं: परिवर्तनशीलता, गैर-सहज API, समय क्षेत्रों के साथ समस्याएँ और सुविधाजनक स्वरूपण विधियों का अभाव। सौभाग्य से, TypeScript पारिस्थितिकी तंत्र कई शक्तिशाली लाइब्रेरीज़ प्रदान करता है जो इन समस्याओं का समाधान करती हैं और प्रकारों के लिए उत्कृष्ट समर्थन प्रदान करती हैं।
इस लेख में, हम तीन सबसे लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे: date-fns, Luxon और Day.js। आप उनकी विशेषताओं, लाभों, कमियों के बारे में जानेंगे और TypeScript के साथ उपयोग के उदाहरण देखेंगे।
1. date-fns — मॉड्यूलर और कार्यात्मक
date-fns एक लाइब्रेरी है जो कार्यात्मक प्रोग्रामिंग के सिद्धांतों पर बनाई गई है। प्रत्येक फ़ंक्शन एक अलग मॉड्यूल है, जो आपको केवल आवश्यक चीज़ों को आयात करने की अनुमति देता है और बंडल के आकार को काफी कम करता है। TypeScript में, लाइब्रेरी में अंतर्निहित प्रकार हैं।
स्थापना
npm install date-fnsTypeScript के साथ उपयोग के उदाहरण
import { format, addDays, differenceInDays, isAfter, parseISO } from 'date-fns';
// तिथि स्वरूपणconst today = new Date();console.log(format(today, 'yyyy-MM-dd')); // '2025-03-20'
// दिन जोड़नाconst nextWeek = addDays(today, 7);console.log(format(nextWeek, 'dd.MM.yyyy')); // '27.03.2025'
// तिथियों के बीच अंतरconst startDate = parseISO('2025-01-01');const endDate = parseISO('2025-12-31');const daysBetween = differenceInDays(endDate, startDate);console.log(`2025 में दिन: ${daysBetween}`); // 364
// तिथियों की तुलनाconst isFuture = isAfter(parseISO('2025-06-01'), today);console.log(`क्या 1 जून 2025 भविष्य में है? ${isFuture}`); // trueलाभ
- ट्री-शेकिंग (tree-shaking) — केवल आवश्यक फ़ंक्शन आयात करें, जिससे एप्लिकेशन का आकार कम होता है।
- अपरिवर्तनीयता — फ़ंक्शन मूल ऑब्जेक्ट को नहीं बदलते, बल्कि नए लौटाते हैं।
- TypeScript समर्थन — बॉक्स से बाहर पूर्ण टाइपिंग।
- स्थानीयकरण — रूसी सहित कई भाषाओं के लिए समर्थन।
कमियाँ
- मूल
Dateके साथ काम करता है, जो समय क्षेत्रों के साथ जटिल संचालन के लिए असुविधाजनक हो सकता है। - अपरिवर्तनीय ऑब्जेक्ट्स के लिए अंतर्निहित समर्थन नहीं है (जैसा कि Luxon में है)।
2. Luxon — शक्तिशाली और आधुनिक
Luxon Moment.js के लेखकों में से एक की लाइब्रेरी है, लेकिन इसकी कमियों के बिना। यह अपने स्वयं के अपरिवर्तनीय ऑब्जेक्ट्स DateTime, Duration और Interval का उपयोग करता है, जो तिथियों के साथ काम को सहज और सुरक्षित बनाता है। Luxon में समय क्षेत्रों और स्थानों के लिए उत्कृष्ट समर्थन है।
स्थापना
npm install luxonTypeScript के लिए प्रकारों की स्थापना की आवश्यकता हो सकती है:
npm install --save-dev @types/luxonTypeScript के साथ उपयोग के उदाहरण
import { DateTime, Duration } from 'luxon';
// निर्माण और स्वरूपणconst now = DateTime.now();console.log(now.toFormat('yyyy-MM-dd HH:mm:ss')); // '2025-03-20 14:30:00'
// समय क्षेत्रों के साथ कार्यconst moscowTime = DateTime.now().setZone('Europe/Moscow');console.log(`मास्को समय: ${moscowTime.toFormat('HH:mm')}`);
// अंतराल जोड़नाconst nextMonth = now.plus({ months: 1 });console.log(`एक महीने बाद: ${nextMonth.toFormat('dd.MM.yyyy')}`);
// तिथियों के बीच अंतरconst start = DateTime.fromISO('2025-01-01');const end = DateTime.fromISO('2025-12-31');const diff = end.diff(start, ['months', 'days']);console.log(`अंतर: ${diff.months} महीने और ${diff.days} दिन`);
// अवधियों के साथ कार्यconst duration = Duration.from पुस्तकालय में भी
TypeScript में Excel के साथ काम करें: लाइब्रेरी, टूल्स और कोड उदाहरण
Zod TypeScript: पूरी गाइड उदाहरणों के साथ
PHP के लिए WebSocket लाइब्रेरी Ratchet: वेबसाइट पर रियल-टाइम बनाना
जावा में रिएक्टिव प्रोग्रामिंग: Project Reactor और RxJava लाइब्रेरीज़
Node.js में छवि प्रसंस्करण: Sharp और Jimp के साथ resize, crop