TypeScript में तिथियों के साथ कार्य: date-fns, Luxon और Day.js लाइब्रेरीज़ का अवलोकन

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

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

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

TypeScript में तिथियों के साथ कार्य: लोकप्रिय लाइब्रेरीज़ का अवलोकन



तिथियों और समय के साथ कार्य करना वेब डेवलपमेंट में सबसे सामान्य और साथ ही जटिल कार्यों में से एक है। JavaScript (और TypeScript) में अंतर्निहित Date ऑब्जेक्ट में कई कमियाँ हैं: परिवर्तनशीलता, गैर-सहज API, समय क्षेत्रों के साथ समस्याएँ और सुविधाजनक स्वरूपण विधियों का अभाव। सौभाग्य से, TypeScript पारिस्थितिकी तंत्र कई शक्तिशाली लाइब्रेरीज़ प्रदान करता है जो इन समस्याओं का समाधान करती हैं और प्रकारों के लिए उत्कृष्ट समर्थन प्रदान करती हैं।



इस लेख में, हम तीन सबसे लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे: date-fns, Luxon और Day.js। आप उनकी विशेषताओं, लाभों, कमियों के बारे में जानेंगे और TypeScript के साथ उपयोग के उदाहरण देखेंगे।



1. date-fns — मॉड्यूलर और कार्यात्मक



date-fns एक लाइब्रेरी है जो कार्यात्मक प्रोग्रामिंग के सिद्धांतों पर बनाई गई है। प्रत्येक फ़ंक्शन एक अलग मॉड्यूल है, जो आपको केवल आवश्यक चीज़ों को आयात करने की अनुमति देता है और बंडल के आकार को काफी कम करता है। TypeScript में, लाइब्रेरी में अंतर्निहित प्रकार हैं।



स्थापना

npm install date-fns


TypeScript के साथ उपयोग के उदाहरण

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 luxon

TypeScript के लिए प्रकारों की स्थापना की आवश्यकता हो सकती है:

npm install --save-dev @types/luxon


TypeScript के साथ उपयोग के उदाहरण

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

अनुशंसाएँ