क्विज़: 14 जावास्क्रिप्ट डेट प्रश्न
JS ट्रिविया के साथ महफिलों में धाक जमाना सीखें! ✨

आप Date क्लास को कितनी अच्छी तरह जानते हैं?
- अपने JavaScript हुनर को साबित करें! 🚀
- कोई लॉगिन या साइनअप की आवश्यकता नहीं। ✨
- बहुविकल्पीय प्रश्न। 🤖 … आखिर यह कितना कठिन हो सकता है, है ना?
रूपरेखा
JavaScript में Date क्लास का API अपनी पेचीदगी के लिए कुख्यात है। इसे Java से विरासत में लिया गया था, और मेरा मानना है कि यह प्राचीन पाषाण काल की समय-गणना विधियों से प्रेरित था।
Date के साथ इस जद्दोजहद के कारण कई डेवलपर्स बिना सोचे-समझे थर्ड-पार्टी लाइब्रेरीज़ का उपयोग करने लगते हैं। हालांकि ये अक्सर एक सुरक्षित और भरोसेमंद विकल्प होते हैं, लेकिन डेट फॉर्मेटिंग या लोकलाइजेशन के लिए इन लाइब्रेरीज़ की शायद ही कभी ज़रूरत पड़ती है!
यह क्विज़ नेटिव Date API के बारे में आपके ज्ञान का परीक्षण करने (और उसे गहरा करने) के लिए बनाया गया है। हिंट और स्पष्टीकरण के लिए हरे बटन का उपयोग करें! उम्मीद है कि इस चैलेंज के अंत तक, JavaScript में Date को लेकर आपकी समझ मज़बूत हो जाएगी।
नोट: मान लें कि सभी उदाहरण GMT-7 लोकल टाइमज़ोन के हिसाब से हैं।
👇 नीचे 14 प्रश्न दिए गए हैं 👇
Date ऑब्जेक्ट किस तारीख को दर्शाएगा? कंसोल का प्रदर्शन प्रारूप अलग हो सकता है।
const d1 = new Date(2020, 1, 1)console.log(d1)Month (महीना) आर्गुमेंट ज़ीरो-बेस्ड (zero-based) होता है। इसकी रेंज 0-11 होती है (पश्चिमी कैलेंडर के अनुसार)।
‘February’ की इंडेक्स वैल्यू 1 होती है। (इसे एक एरे लुकअप की तरह समझें।)
Date ऑब्जेक्ट किस तारीख को दर्शाएगा? कंसोल का प्रदर्शन प्रारूप अलग हो सकता है।
const d2 = new Date(2020, 0, 1)console.log(d2)Month आर्गुमेंट zero-based होता है। इसकी रेंज 0-11 होती है (पश्चिमी कैलेंडर के अनुसार)।
‘January’ की इंडेक्स वैल्यू शून्य (0) होती है। (इसे एक array lookup की तरह समझें।)
आउटपुट में क्या शामिल होगा?
const d3 = Date('Thu, 01 Jan 1970 00:00:00 GMT')console.log(d3)new के बिना Date() कॉल करने पर सभी आर्ग्यूमेंट अनदेखे होते हैं और वर्तमान तारीख तथा समय की स्ट्रिंग लौटती है। दिए गए आर्ग्यूमेंट से Date ऑब्जेक्ट बनाने के लिए new Date(...) का उपयोग करें।
इस प्रश्न के लिए स्थानीय ऑफसेट GMT−7 मानें। आउटपुट में क्या शामिल होगा?
const date = new Date(2020)console.log(date.getFullYear())एक सिंगल इंटीजर आर्गुमेंट के साथ बनाया गया Date इंस्टेंस Unix Epoch वैल्यू के रूप में इंटरप्रेट किया जाता है। Epoch 1 जनवरी, 1970 से मिलीसेकंड की गिनती है।
2020 (मिलीसेकंड) की वैल्यू 1 जनवरी, 1970 के 2 सेकंड बाद के समय को दर्शाती है।
चूंकि हमारा लोकल टाइम ज़ोन -7 घंटे का नेगेटिव ऑफसेट है, इसलिए हमें Wed Dec 31 1969 17:00:02 GMT-0700 (Mountain Standard Time) मिलता है।
आप .getUTCFullYear() का उपयोग करके लोकल टाइमज़ोन ऑफसेट से बच सकते हैं।
इस प्रश्न के लिए स्थानीय ऑफसेट GMT−7 मानें। कंसोल पर क्या वैल्यू प्रिंट होगी?
const d1 = new Date('2020-01-01')const d2 = new Date('2020-01-01T00:00')console.log(d1.getFullYear(), d2.getFullYear())बिना T टाइम वैल्यू वाली स्ट्रिंग 1 जनवरी, 2020 लग सकती है - लेकिन केवल डेट वाली स्ट्रिंग्स को UTC माना जाता है, और जब इसे स्थानीय टाइमज़ोन (GMT-7) में एडजस्ट किया जाता है, तो हम पाते हैं कि हम अभी भी 2019 में ही हैं।
बिना किसी स्पष्ट टाइमज़ोन वाली डेट-टाइम स्ट्रिंग्स को स्थानीय समय (local time) में इंटरप्रेट किया जाता है।
T00:00 फॉर्मेट के कारण दूसरी वैल्यू को स्थानीय आधी रात (local midnight) के रूप में इंटरप्रेट किया जाता है।
पहली डेट को Tue Dec 31 2019 17:00:00 GMT-0700 (Mountain Standard Time) के रूप में इंटरप्रेट किया गया है।
दूसरी डेट को Wed Jan 01 2020 00:00:00 GMT-0700 (Mountain Standard Time) के रूप में इंटरप्रेट किया गया है।
एक गलत फॉर्मेटिंग मेथड चुनें:
toLocaleFormat() ECMAScript मानक का हिस्सा नहीं है, इसलिए पोर्टेबल कोड में इसका उपयोग न करें। मानक toLocaleDateString() या toLocaleString() का उपयोग करें।
toLocaleDateString के दस्तावेज़ देखें। फ़ॉर्मेटिंग विकल्प Intl.DateTimeFormat में दिए गए हैं।
आउटपुट में क्या शामिल होगा?
var date = Date.UTC('2020-01-02T00:00')console.log(date.toUTCString())Date.UTC() वर्ष, महीने आदि के संख्यात्मक आर्ग्यूमेंट चाहता है। यह स्ट्रिंग वैध वर्ष में नहीं बदल सकती, इसलिए कॉल पहले NaN लौटाती है। वह संख्या है, Date ऑब्जेक्ट नहीं; उसकी .toUTCString() कॉल करने पर TypeError आता है।
आउटपुट में क्या शामिल होगा?
const d = Date.UTC(2020, 0, 1)console.log(d)हेल्पर मेथड Date.UTC कोई date instance वापस नहीं करता है। यह मिलीसेकंड में एक पूर्णांक (integer) वापस करता है।
इस प्रश्न के लिए स्थानीय ऑफसेट GMT−7 मानें। आउटपुट में क्या शामिल होगा?
// Assume local TZ is -07:00const d = new Date(Date.UTC(2020, 0, 1))console.log(d.getTimezoneOffset())Date ऑब्जेक्ट Unix epoch से मिलीसेकंड संग्रहीत करते हैं, टाइमज़ोन नहीं। getTimezoneOffset() उस तारीख के स्थानीय टाइमज़ोन नियमों का उपयोग करके UTC से अंतर मिनटों में लौटाता है। यहाँ माने गए GMT−7 ऑफसेट पर परिणाम 420 है। डेलाइट सेविंग टाइम वाले क्षेत्रों में अलग तारीखों पर ऑफसेट बदल सकता है।
Date ऑब्जेक्ट किस तारीख को दर्शाएगा? कंसोल का प्रदर्शन प्रारूप अलग हो सकता है।
const d = new Date(2020, 0, 1)d.setDate(1)console.log(d).setDate() मेथड दिए गए इंस्टेंस के वर्तमान महीने के आधार पर महीने का दिन (day of the month) सेट करता है।
यदि उपलब्ध दिनों की संख्या के बाहर कोई वैल्यू दी जाती है, तो डेट इंस्टेंस की महीने वाली वैल्यू अपने आप एडजस्ट हो जाएगी (जैसे जनवरी में setDate(32) करने पर यह 1 फरवरी के रूप में कैलकुलेट होगा।)
Date ऑब्जेक्ट किस तारीख को दर्शाएगा? कंसोल का प्रदर्शन प्रारूप अलग हो सकता है।
const d = new Date(2020, 0, 1)d.setMonth(1)console.log(d).setMonth() मेथड दिए गए date instance का महीना सेट करता है।
महीने का argument zero-based होता है, जिसकी रेंज 0-11 होती है (पश्चिमी कैलेंडर के अनुसार)।
Date ऑब्जेक्ट किस तारीख को दर्शाएगा? कंसोल का प्रदर्शन प्रारूप अलग हो सकता है।
const d = new Date(2020, 0, 1)d.setMonth(12)console.log(d).setMonth() मेथड दिए गए डेट इंस्टेंस का महीना सेट करता है।
month तर्क (argument) ज़ीरो-बेस्ड होता है, जिसमें 0-11 की रेंज में 12 मान होते हैं (पश्चिमी कैलेंडर के अनुसार)।
यहाँ हम देखते हैं कि वर्ष को 2021 में एडजस्ट किया गया है, क्योंकि setMonth(12) का मान 11 (दिसंबर) से 1 अधिक है।
Date ऑब्जेक्ट किस तारीख को दर्शाएगा? कंसोल का प्रदर्शन प्रारूप अलग हो सकता है।
const d = new Date(2020, 0, 1)d.setMonth(13)console.log(d).setMonth() मेथड दिए गए date instance का महीना सेट करता है।
महीने का argument zero-based होता है, जिसकी रेंज 0-11 होती है (पश्चिमी कैलेंडर के अनुसार)।
यहाँ हम देखते हैं कि महीना और साल February 2021 में एडजस्ट हो गया है, क्योंकि setMonth(13) की वैल्यू 11 (December) से 2 ज़्यादा है।
Date ऑब्जेक्ट किस तारीख को दर्शाएगा? कंसोल का प्रदर्शन प्रारूप अलग हो सकता है।
const d = new Date(2020, 0, 1)d.setMonth(-1)console.log(d).setMonth() मेथड दिए गए डेट इंस्टेंस का महीना सेट करता है।
महीने का आर्गुमेंट जीरो-बेस्ड (zero-based) होता है, जिसकी रेंज 0-11 होती है (पश्चिमी कैलेंडर के अनुसार)।
यहाँ हम देखते हैं कि महीना और साल पीछे रोल होकर दिसंबर 2019 पर आ जाते हैं, क्योंकि setMonth(-1) की वैल्यू 0 (जनवरी) से कम है।