परिचय: TypeScript में दिनांक के साथ कार्य पर विशेष ध्यान क्यों आवश्यक है
\n\nदिनांक और समय के साथ कार्य करना वेब डेवलपमेंट में सबसे सामान्य और साथ ही सबसे कपटी कार्यों में से एक है। TypeScript में, जो JavaScript का एक सख्ती से टाइप किया गया सुपरसेट है, Date ऑब्जेक्ट को अपने पूर्वज की सभी "विशेषताएं" विरासत में मिली हैं: गैर-सहज ज्ञान वाले महीने (शून्य से गिनती), विधियों की परिवर्तनशीलता और समय क्षेत्रों से संबंधित समस्याएं। हालांकि, सख्त टाइपिंग और आधुनिक लाइब्रेरीज़ का उपयोग करके, आप समय के साथ कार्य करने के लिए सुरक्षित, पूर्वानुमानित और पढ़ने योग्य कोड लिख सकते हैं।
इस लेख में, हम वह सब कुछ कवर करेंगे जो एक डेवलपर को जानना चाहिए: बुनियादी दिनांक निर्माण से लेकर टाइमज़ोन और फ़ॉर्मेटिंग के साथ उन्नत कार्य तक। आप सीखेंगे कि सामान्य गलतियों से कैसे बचें और TypeScript प्रोजेक्ट्स के लिए कौन से उपकरण (अंतर्निहित और तृतीय-पक्ष) सबसे उपयुक्त हैं।
\n\n1. मूल बातें: Date ऑब्जेक्ट और TypeScript में इसकी टाइपिंग
\n\nनिर्माण और बुनियादी विधियाँ
\n\nTypeScript में, JavaScript की तरह ही, दिनांक के साथ कार्य करने के लिए अंतर्निहित Date ऑब्जेक्ट का उपयोग किया जाता है। TypeScript इसके लिए तैयार प्रकार प्रदान करता है, इसलिए किसी अतिरिक्त परिभाषा की आवश्यकता नहीं है।
// वर्तमान दिनांक बनाना\nconst now: Date = new Date();\nconsole.log(now); // 2024-01-15T10:30:00.000Z\n\n// स्ट्रिंग से निर्माण (ISO 8601)\nconst specificDate: Date = new Date('2024-12-31T23:59:59');\n\n// घटकों से निर्माण (वर्ष, महीना [0-11], दिन, घंटे...)\nconst birthday: Date = new Date(1990, 0, 15); // 15 जनवरी 1990\n// ध्यान दें: महीना 0 = जनवरी!\n\nपरिवर्तनशीलता की समस्या
\n\nDate ऑब्जेक्ट की विधियाँ मूल ऑब्जेक्ट को बदल देती हैं। इससे अप्रत्याशित बग हो सकते हैं। TypeScript टाइप स्तर पर इसे रोक नहीं सकता, लेकिन आप अपरिवर्तनीय दृष्टिकोण का उपयोग कर सकते हैं।
const date = new Date('2024-01-01');\ndate.setDate(date.getDate() + 5); // परिवर्तन! अब date 6 जनवरी है\n// बेहतर है एक नया ऑब्जेक्ट बनाना:\nconst newDate = new Date(date.getTime() + 5 * 24 * 60 * 60 * 1000);\n\nUnix Timestamp की टाइपिंग
\n\nअक्सर दिनांक संख्याओं (1970 से मिलीसेकंड) के रूप में पास किए जाते हैं। स्पष्टता के लिए type alias का उपयोग करें:
\n\ntype UnixTimestamp = number;\n\nfunction formatTimestamp(ts: UnixTimestamp): string {\n return new Date(ts).toISOString();\n}\n\nconst myTimestamp: UnixTimestamp = 1705315200000;\nconsole.log(formatTimestamp(myTimestamp));\n\n2. दिनांक फ़ॉर्मेटिंग और पार्सिंग
\n\nअंतर्निहित फ़ॉर्मेटिंग विधियाँ
\n\nJavaScript स्थानीयकृत आउटपुट के लिए बुनियादी विधियाँ प्रदान करता है। TypeScript में ये "बॉक्स से बाहर" काम करती हैं:
\n\nconst date = new Date('2024-06-15T14:30:00');\n\n// स्थानीयकृत स्ट्रिंग्स\nconsole.log(date.toLocaleDateString('hi-IN')); // "15/6/2024"\nconsole.log(date.toLocaleTimeString('en-US')); // "2:30:00 PM"\nconsole.log(date.toLocaleString('de-DE')); // "15.6.2024, 14:30:00"\n\n// ISO-स्ट्रिंग (API के लिए सुविधाजनक)\nconsole.log(date.toISOString()); // "2024-06-15T11:30:00.000Z" (हमेशा UTC)\n\nस्ट्रिंग पार्सिंग: खतरे
\n\nnew Date(str) कंस्ट्रक्टर के माध्यम से स्ट्रिंग पार्स करने से विभिन्न ब्राउज़रों में अप्रत्याशित परिणाम मिल सकते हैं। स्पष्ट जाँच के साथ Date.parse() या तृतीय-पक्ष लाइब्रेरीज़ का उपयोग करना बेहतर है।
// अविश्वसनीय तरीका\nconst parsed = new Date('2024/01/15'); // अस्थिर रूप से काम कर सकता है\n\n// विश्वसनीय तरीका: ISO 8601\nconst safeParse = (dateStr: string): Date | null => {\n const ts = Date.parse(dateStr);\n return isNaN(ts) ? null : new Date(ts);\n};\n\nconst result = safeParse('2024-01-15T10:00:00Z');\nif (result) {\n console.log(result.toISOString());\n}\n\n3. उन्नत हेरफेर और तुलना
\n\nदिनांक तुलना
\n\nदिनांकों की तुलना सीधे तुलना ऑपरेटरों के माध्यम से की जा सकती है, लेकिन सटीक तुलना (समानता) के लिए संख्या में बदलना आवश्यक है:
\n\nconst date1 = new Date('2024-01-01');\nconst date2 = new Date('2024-01-0