डेट ऑब्जेक्ट
यह लेख डेट ऑब्जेक्ट की व्याख्या करता है।
हम डेट ऑब्जेक्ट को प्रारंभिक तंत्र से लेकर व्यावहारिक कार्यों में सामान्यतः उपयोग की जाने वाली प्रक्रियाओं तक ठोस उदाहरणों के साथ चरण दर चरण समझाएंगे।
YouTube Video
डेट ऑब्जेक्ट
डेट ऑब्जेक्ट क्या है?
जावास्क्रिप्ट में डेट ऑब्जेक्ट तारीख और समय को संभालने के लिए एक मानक ऑब्जेक्ट है। आंतरिक रूप से, यह 1 जनवरी 1970, 00:00:00 UTC से बीते मिलीसेकंड की संख्या के आधार पर तारीख और समय को प्रबंधित करता है।
सबसे पहले, वर्तमान तिथि और समय को दर्शाने वाला एक Date ऑब्जेक्ट बनाते हैं, और इसकी सामग्री जांचते हैं।
1const now = new Date();
2console.log(now);- यह कोड निष्पादन के समय वर्तमान तारीख और समय को दर्शाने वाला एक डेट ऑब्जेक्ट बनाता है। प्रदर्शन प्रारूप निष्पादन वातावरण जैसे कि ब्राउज़र या ऑपरेटिंग सिस्टम पर निर्भर करता है।
डेट ऑब्जेक्ट कैसे बनाएं
अपनी जरूरतों के अनुसार डेट ऑब्जेक्ट्स कई तरीकों से बनाए जा सकते हैं। एक विशेष रूप से महत्वपूर्ण बिंदु जिसे गलत समझना आसान है वह यह है कि कंस्ट्रक्टर में महीनों की गिनती शून्य से शुरू होती है, यानी महीने 0 से शुरू होते हैं।
1const d1 = new Date(); // Current date and time
2const d2 = new Date("2025-01-01"); // Create from an ISO date string
3const d3 = new Date(2025, 0, 1); // January 1, 2025 (month is zero-based)
4const d4 = new Date(2025, 0, 1, 10, 30); // January 1, 2025, 10:30
5
6console.log(d1, d2, d3, d4);new Date(year, month, day)में,monthका अर्थ है0जनवरी है और11दिसंबर है। अगर आप इस स्पेसिफिकेशन को नहीं समझते हैं, तो आप अनजाने में एक महीने की गड़बड़ी वाला दिनांक बना सकते हैं, इसलिए हमेशा सावधान रहें।
तारीख और समय के प्रत्येक तत्व को प्राप्त करना
आप Date ऑब्जेक्ट से वर्ष, माह, दिन, समय और सप्ताह का दिन अलग-अलग प्राप्त कर सकते हैं। सभी गेटर मेथड्स मानों को संख्याओं के रूप में लौटाते हैं।
1const date = new Date();
2
3console.log(date.getFullYear()); // Year
4console.log(date.getMonth()); // Month (0-based: 0 = January)
5console.log(date.getDate()); // Day of the month
6console.log(date.getHours()); // Hours
7console.log(date.getMinutes()); // Minutes
8console.log(date.getSeconds()); // Seconds
9console.log(date.getDay()); // Day of the week (0 = Sunday, 6 = Saturday)
- निर्माण की तरह, ध्यान दें कि
getMonth()भी शून्य-आधारित है। प्रदर्शन के लिए इसका उपयोग करते समय, मान को समायोजित करने के लिए आमतौर पर 1 जोड़ा जाता है। getDay()सप्ताह के दिन को एक संख्या के रूप में लौटाता है। 0 रविवार को दर्शाता है, और 6 शनिवार को दर्शाता है।
तारीख और समय को संशोधित करना
डेट एक परिवर्तनीय (म्यूटेबल) ऑब्जेक्ट है, इसका मतलब है कि आप बाद में इसकी मान बदल सकते हैं। यह विशेषता उपयोगी है, लेकिन आपको अनजाने दुष्प्रभावों से सावधान रहना होगा।
मौजूदा Date ऑब्जेक्ट के मानों को बदलने के लिए आप set मेथड्स का उपयोग कर सकते हैं।
1const date = new Date("2025-01-01");
2
3date.setFullYear(2026);
4date.setMonth(5); // June
5date.setDate(15);
6
7console.log(date);setMonth()भी शून्य-आधारित है। मूल ऑब्जेक्ट को सीधे संशोधित किया जाता है।
तारीखों को जोड़ना और घटाना
मिलीसेकंड्स का उपयोग करके या setDate() का उपयोग करके तारीखों की गणना करना आम बात है। दिन-आधारित गणनाओं के लिए, setDate() का उपयोग करना विशेष रूप से सहज और सुरक्षित है।
1const date = new Date("2025-01-01");
2
3date.setDate(date.getDate() + 7);
4console.log(date);- इस उदाहरण में, हम निर्दिष्ट तारीख के 7 दिन बाद की तारीख की गणना कर रहे हैं। अगर जोड़ने पर यह नई महीने में चला जाता है, तो यह स्वचालित रूप से समायोजित हो जाता है।
Date ऑब्जेक्ट्स की तुलना करना
डेट ऑब्जेक्ट्स की तुलना संख्याओं के रूप में की जा सकती है। इसका कारण यह है कि आंतरिक मिलीसेकंड मान की तुलना की जाती है।
1const a = new Date("2025-01-01");
2const b = new Date("2025-01-10");
3
4console.log(a < b); // true
5console.log(a > b); // false
- यदि आप तारीखों का क्रम निर्धारित करना चाहते हैं, तो किसी अतिरिक्त रूपांतरण की आवश्यकता नहीं है। आप तुलना ऑपरेटरों का सीधे उपयोग कर सकते हैं।
टाइमस्टैम्प्स (मिलीसेकंड्स) के साथ काम करना
डेट ऑब्जेक्ट को मिलीसेकंड्स (टाइमस्टैम्प्स) को दर्शانے वाली संख्याओं में और उनसे बदला जा सकता है। यह प्रारूप अक्सर एपीआई या डाटाबेस इंटीग्रेशन में उपयोग किया जाता है।
1const now = Date.now();
2console.log(now);
3
4const date = new Date(now);
5console.log(date);Date.now()वर्तमान समय को मिलीसेकंड्स में लौटाता है। जब आप मान को एक संख्या के रूप में संग्रहीत या तुलना करना चाहते हैं, तो यह बहुत उपयोगी है।
तारीखों को स्ट्रिंग के रूप में प्रारूपित करना
Date को जैसे-का-तैसा प्रदर्शित करने पर अक्सर एक ऐसा प्रारूप मिलता है जो आपकी आवश्यकताओं के अनुकूल नहीं हो सकता। इसलिए, आपको इसे अपनी आवश्यकताओं के अनुसार स्पष्ट रूप से प्रारूपित करना चाहिए।
1const date = new Date("2025-01-01");
2
3const formatted = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
4console.log(formatted);- इसे इस तरह से मैन्युअल रूप से प्रारूपित करके, आप प्रदर्शन प्रारूप पर पूरी तरह नियंत्रण कर सकते हैं। व्यावहारिक कार्य में, इस उद्देश्य के लिए अक्सर लाइब्रेरीज़ का उपयोग किया जाता है।
UTC और लोकल टाइम के बीच अंतर
Date लोकल टाइम और UTC दोनों को संभालने के लिए मेथड्स प्रदान करता है। सर्वर इंटीग्रेशन और अंतरराष्ट्रीय अनुकूलता के लिए इस अंतर को ठीक से समझना महत्वपूर्ण है।
1const date = new Date();
2
3console.log(date.getHours()); // Local time (hours)
4console.log(date.getUTCHours()); // UTC time (hours)
getUTC*मेथड्स हमेशा UTC के आधार पर मान लौटाते हैं। टाइम जोन बदलते समय डेटा की प्रोसेसिंग में विशेष तौर पर सावधानी बरतें।
डेट ऑब्जेक्ट्स का उपयोग करते समय सावधानियां
Date सुविधाजनक है, लेकिन इसमें कुछ पेचीदा पहलू भी हैं। विशेष रूप से, शून्य-आधारित महीना और इसकी परिवर्तनीयता (म्यूटेबिलिटी) बग्स के सामान्य कारण हैं।
आइए नीचे कुछ विशेष उदाहरणों को देखें ताकि यह समझ सकें कि Date परिवर्तनीय (mutable) होने का क्या प्रभाव पड़ता है।
1const original = new Date("2025-01-01");
2const copy = new Date(original);
3
4copy.setDate(10);
5
6console.log(original);
7console.log(copy);- यदि आप मूल तारीख और समय रखना चाहते हैं, तो हमेशा एक कॉपी बनाएं। इस बिंदु से अवगत रहना आपको अनचाहे बग्स से बचने में मदद करेगा।
ऐसे कारण जिनसे Date को संभालना मुश्किल होता है और लाइब्रेरी उपयोग की आवश्यकताएं
Date ऑब्जेक्ट एक मानक फ़ंक्शन के रूप में पर्याप्त सुविधाएं प्रदान करता है, लेकिन कई बार इसे व्यावहारिक रूप से उपयोग करना कठिन हो सकता है। आम समस्याओं में महीनों और सप्ताह के दिनों का शून्य-आधारित होना, स्थानीय समय और UTC को लेकर भ्रम, और ऑब्जेक्ट का परिवर्तनीय (mutable) होना शामिल है। जैसे-जैसे तारीखों की प्रोसेसिंग बढ़ती है, ये समस्याएं और अधिक बग्स का कारण बन सकती हैं।
साधारण तिथि प्राप्ति और तुलना के लिए Date पर्याप्त है, परन्तु जब तिथि संबंधी गणनाएँ या डिस्प्ले फॉर्मेटिंग अधिक होती हैं, तो कोड की पठनीयता और अनुरक्षण क्षमता कम हो जाती है।
यदि आपकी आवश्यकताएँ निम्नलिखित जैसी हैं, तो आप dayjs या date-fns जैसी हल्की तिथि-पुस्तकालयों (लाइब्रेरीज़) के उपयोग पर विचार कर सकते हैं।
- आपको समय क्षेत्रों (Time Zones) को स्पष्ट रूप से संभालना है।
- आपको बार-बार तिथि या अंतराल गणना करने की आवश्यकता होती है।
- आप डिस्प्ले फॉर्मेट को लचीले तरीके से बदलना चाहते हैं।
- आप तिथि और समय को अपरिवर्तनीय (immutably) तरीके से संभालना चाहते हैं।
सारांश
जावास्क्रिप्ट में तारीख और समय को संभालने के लिए डेट ऑब्जेक्ट्स सबसे मूलभूत टूल हैं। इसके पेचीदगियों को समझकर और सही तरीके से निर्माण, प्राप्ति, गणना और फॉर्मेटिंग करके, आप इसे वास्तविक दुनिया के काम में सुरक्षित रूप से इस्तेमाल कर सकते हैं।
मूल बातें सीखने के बाद, जरूरत अनुसार डेट लाइब्रेरीज़ का उपयोग करना व्यावहारिक विकल्प है।
आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।