जावास्क्रिप्ट में लिखल लगभग कवनो भी तरह के एप्लीकेशन कवनो ना कवनो क्षमता में समय भा तारीख के संगे काम करेला। शुरू में ई बिल्ट-इन डेट एपीआई तक ले सीमित रहे। एह एपीआई में बेसिक फंक्शनलिटी शामिल बा, बाकी ई का कर सके ला एह में काफी सीमित बा। Moment.js नियर थर्ड पार्टी लाइब्रेरी सभ, आ बाद में बिल्ट-इन एपीआई सभ जइसे कि Intl API आ नया Temporal API सभ, समय आ तारीख के साथ काम करे में बहुत ढेर लचीलापन जोड़े लें। पल के उदय आ पतन.js Moment.js एगो जावास्क्रिप्ट लाइब्रेरी हवे जेह में समय आ तारीख के साथ काम करे खातिर शक्तिशाली उपयोगिता बा। एह में बेसिक डेट एपीआई से गायब फीचर सभ के सामिल कइल जाला, जइसे कि टाइम जोन मैनिपुलेशन, आ कई गो आम ऑपरेशन सभ के सरल बनावे ला। मोमेंट में तारीख आ समय के फॉर्मेट करे खातिर फंक्शन भी शामिल बा। ई कई अलग-अलग एप्लीकेशन सभ में व्यापक रूप से इस्तेमाल होखे वाली लाइब्रेरी बन गइल। हालांकि मोमेंट के मुद्दा में भी आपन हिस्सा रहे| ई एगो बड़हन लाइब्रेरी ह, आ कवनो एप्लीकेशन के बंडल साइज में काफी बढ़ोतरी कर सकेला. चुकी लाइब्रेरी ट्री शेकिंग (आधुनिक बंडलर के एगो फीचर जवन लाइब्रेरी के अप्रयुक्त हिस्सा के हटा सकेला) के सपोर्ट ना करेला, एहसे पूरा मोमेंट लाइब्रेरी के शामिल कईल गईल बा भले ही आप एकर सिर्फ एक या दुगो फंक्शन के इस्तेमाल करीं। मोमेंट के एगो अउरी मुद्दा ई बा कि एकरा से बनावल वस्तु परिवर्तनशील होला। Moment ऑब्जेक्ट पर कुछ खास फंक्शन के कॉल कइला से साइड इफेक्ट होला आ ओह ऑब्जेक्ट के वैल्यू में उत्परिवर्तन होला। एकरा से अप्रत्याशित व्यवहार भा बग हो सकेला. 2020 में मोमेंट के रखरखाव करे वाला लोग लाइब्रेरी के रखरखाव मोड में डाले के फैसला कइल। कवनो नया फीचर डेवलपमेंट नइखे होखत आ रखरखाव करे वाला लोग एकर इस्तेमाल नया प्रोजेक्ट खातिर ना करे के सलाह देत बा. अउरी जावास्क्रिप्ट डेट लाइब्रेरी बाड़ी सऽ, जइसे कि date-fns, बाकिर शहर में एगो नया प्लेयर बा, एगो एपीआई जवन सीधे जावास्क्रिप्ट में बनल बा: टेम्पोरल. ई एगो नया मानक हवे जे मूल डेट एपीआई के छेद के भर देला आ साथ ही साथ मोमेंट आ अउरी लाइब्रेरी सभ में पावल जाए वाली कुछ सीमा सभ के हल भी करे ला। लौकिक का होला? टेम्पोरल एगो नया समय आ तारीख के एपीआई हवे जे ईसीएमएसक्रिप्ट मानक में जोड़ल जा रहल बा, जवन आधुनिक जावास्क्रिप्ट के परिभाषित करे ला। मार्च 20266 के अनुसार ई TC39 प्रक्रिया (जावास्क्रिप्ट भाषा में प्रस्ताव आ जोड़ के देखरेख करे वाली समिति) के स्टेज 4 पर पहुँच गइल बा, आ एकरा के ECMAScript स्पेसिफिकेशन के अगिला संस्करण में शामिल कइल जाई। एकरा के कई गो ब्राउजर में लागू हो चुकल बा: क्रोम 144+ अवुरी फायरफॉक्स 139+, एकरा बाद सफारी के जल्दिए आवे के उम्मेद बा। असमर्थित ब्राउजर आ नोड.जेएस खातिर भी पॉलीफिल उपलब्ध बा। टेम्पोरल एपीआई अइसन ऑब्जेक्ट बनावे ला जे, आमतौर पर, समय के पल सभ के प्रतिनिधित्व करे लें। ई कौनों समय क्षेत्र में फुल टाइम आ डेट स्टांप हो सके लें, या फिर ई बिना कौनों टाइम जोन भा डेट के जानकारी के "वाल क्लॉक" समय के जेनेरिक इंस्टेंस हो सके लें। टेम्पोरल के कुछ मुख्य बिसेसता सभ में शामिल बाड़ें:
तारीख वाला भा बिना तारीख के समय।टेम्पोरल ऑब्जेक्ट कौनों बिसेस तारीख पर कौनों बिसेस समय के प्रतिनिधित्व क सके ला, या बिना कौनों तारीख के जानकारी के समय के। कवनो खास तारीख के, बिना समय के, भी देखावल जा सकेला। टाइम जोन सपोर्ट।टेम्पोरल ऑब्जेक्ट पूरा तरीका से टाइम जोन से अवगत होलें आ अलग-अलग टाइम जोन में बदलल जा सके लें। मोमेंट टाइम जोन के भी सपोर्ट करेला, लेकिन एकरा खातिर अतिरिक्त मोमेंट-टाइमजोन लाइब्रेरी के जरूरत होला। अपरिवर्तनीयता।एक बेर टेम्पोरल ऑब्जेक्ट बन गइला के बाद ओकरा के बदलल ना जा सकेला। समय अंकगणित भा समय क्षेत्र के रूपांतरण से अंतर्निहित वस्तु के संशोधन ना होला। एकरा बजाय, उ लोग एगो नया Temporal ऑब्जेक्ट पैदा करेला। 1-आधारित अनुक्रमणिका।डेट एपीआई (साथ ही मोमेंट के साथ भी) के साथ बग के एगो आम स्रोत ई बा कि महीना शून्य-सूचकांक वाला होला। मतलब कि जनवरी महीना 0 ह, ना कि महीना 1 जइसन कि हमनी का सभे असल जिनिगी में समझत बानी जा. टेम्पोरल 1 आधारित अनुक्रमणिका के इस्तेमाल से एकरा के ठीक करे ला — जनवरी महीना 1 हवे। इ ब्राउजर में बनल बा।चूंकि टेम्पोरल खुद ब्राउजर में एगो एपीआई ह, एहसे इ आपके एप्लीकेशन के बंडल साइज में कुछूओ ना जोड़ेला।
इहो जानल जरूरी बा कि डेट एपीआई खतम नइखे होखत. जबकि टेम्पोरल एह एपीआई के जगह ले लेला, एकरा के हटावल भा ना कइल जा रहल बा। अगर ब्राउजर अचानक डेट एपीआई हटा देले त बहुत एप्लीकेशन टूट जाई। हालांकि इहो ध्यान राखीं कि अब मोमेंट के रखरखाव मोड में एगो विरासत परियोजना मानल जाला. बाकी लेख में हमनी के मोमेंट आधारित कोड के नया टेम्पोरल एपीआई में माइग्रेट करे के कुछ “रेसिपी” देखब जा। आईं रिफैक्टरिंग शुरू कइल जाव! तारीख आ समय के ऑब्जेक्ट बनावल तारीख आ समय में हेरफेर करे से पहिले ओकरा के प्रतिनिधित्व करे वाला वस्तु बनावे के पड़ी. वर्तमान तारीख आ समय के प्रतिनिधित्व करे वाला Moment ऑब्जेक्ट बनावे खातिर, moment फंक्शन के इस्तेमाल करीं। const अब = पल () के बा; कंसोल.लॉग (अब) के बा; // पल <2026-02-18T21:26:29-05:00> के बा
अब एह ऑब्जेक्ट के जरूरत के हिसाब से फॉर्मेट भा हेरफेर कइल जा सके ला।
// यूटीसी में बदलल जाला // के बा।warning: ई Moment ऑब्जेक्ट के उत्परिवर्तित कर देला आ ओकरा के UTC मोड में डाल देला! कंसोल.लॉग (अब.यूटीसी ()); // पल <2026-02-19T02:26:29Z> के बा
// एगो फॉर्मेट कइल स्ट्रिंग प्रिंट करीं - ध्यान दीं कि ई अब यूटीसी समय के इस्तेमाल कर रहल बा कंसोल.लॉग (अब. प्रारूप ('एमएम/डीडी/वाईवाईवाईवाई एचएच: मिमी: एसएस ए')); // 02/19/2026 02:27:07 बजे के बा
मोमेंट के बारे में याद राखे के मुख्य बात इ बा कि मोमेंट ऑब्जेक्ट में हमेशा समय अवुरी तारीख के बारे में जानकारी शामिल होखेला। अगर रउआँ के खाली समय के जानकारी के साथ काम करे के जरूरत होखे तब आमतौर पर ई ठीक बा, बाकी ई डेलाइट सेविंग टाइम भा लीप ईयर नियर स्थिति सभ में अप्रत्याशित व्यवहार पैदा क सके ला, जहाँ तारीख के समय के गणना पर परभाव पड़ सके ला। टेम्पोरल अधिका लचीला होला. रउआँ Temporal.Instant ऑब्जेक्ट बना के वर्तमान तारीख आ समय के प्रतिनिधित्व करे वाला ऑब्जेक्ट बना सकत बानी। ई समय के एगो बिंदु के प्रतिनिधित्व करे ला जे “युग” (1 जनवरी 1970 के आधा रात के यूटीसी) के बाद के समय द्वारा परिभाषित कइल गइल बा। टेम्पोरल नैनोसेकंड स्तर के परिशुद्धता के साथ समय में एह पल के संदर्भ दे सके ला। const अब = टेम्पोरल.अब.इंस्टेंट ();
// युग के बाद से कच्चा नैनोसेकंड देखल जाव कंसोल.लॉग (अब.युगनैनोसेकंड) के बा; // 1771466342612000000एन के बा
// यूटीसी खातिर प्रारूप कंसोल.लॉग (अब.टूस्ट्रिंग ()); // 2026-02-19T01:55:27.844Z के बा
// कवनो खास समय क्षेत्र खातिर प्रारूप console.log (अब.toString ({ समय क्षेत्र: 'अमेरिका / न्यू_यार्क' })); // 2026-02-18T20:56:57.905-05:00 के बा
Temporal.Instant ऑब्जेक्ट के भी फ्रॉम स्टेटिक मेथड के इस्तेमाल से एगो खास समय आ तारीख खातिर बनावल जा सके ला।
const myInstant = टेम्पोरल.इंस्टेंट.से ('2026-02-18T21:10:00-05:00');
// स्थानीय समय क्षेत्र में तत्काल के फॉर्मेट करीं। ध्यान रहे कि ई खाली नियंत्रित करेला // स्वरूपण - ई ऑब्जेक्ट के उत्परिवर्तन ना करेला जइसे moment.utc करेला। console.log (myInstant.toString ({ समय क्षेत्र: 'अमेरिका / न्यू_यार्क' })); // 2026-02-18T21:10:00-05:00 के बा
रउआँ अउरी प्रकार के टेम्पोरल ऑब्जेक्ट भी बना सकत बानी, जवना में शामिल बा:
Temporal.PlainDate: एगो अइसन तारीख जवना में समय के कवनो जानकारी ना होखे। Temporal.PlainTime: एगो अइसन समय जवना में कवनो तारीख के जानकारी ना होखे। Temporal.ZonedDateTime: कौनों बिसेस समय क्षेत्र में एगो तारीख आ समय।
इनहन में से हर एक में from मेथड होला जेकरा के तारीख आ/या समय निर्दिष्ट करे वाला ऑब्जेक्ट के साथ कॉल कइल जा सके ला, या पार्स करे खातिर तारीख स्ट्रिंग। // बस एगो तारीख बा const आज = टेम्पोरल.प्लेनडेट.से ({ साल: 2026, 1999 में भइल। महीना: 2, // नोट हम फरवरी खातिर 2 के इस्तेमाल कर रहल बानी दिन : 18 बजे के बा }); कंसोल.लॉग (आज.टूस्ट्रिंग ()); // 2026-02-18 के बा
// बस एगो समय बा const lunchTime = टेम्पोरल.सादा समय.से ({ घंटा : 12 के बा }); कंसोल.लॉग (लंच टाइम.टूस्ट्रिंग ()); // 12:00:00 बजे के बा
// अमेरिका के पूर्वी समय क्षेत्र में एगो तारीख आ समय const dueAt = टेम्पोरल.जोनेडडेटटाइम.से ({ समयक्षेत्र: 'अमेरिका/न्यू_यार्क', 1999। साल: 2026, 1999 में भइल। महीना : 3, 2019 के बा। दिन : 1, 10 के बा। घंटा : 12, 12 बजे के बा। मिनट: 0, 10 के बा। दूसरा : 0 के बा }); कंसोल.लॉग (ड्यूएट.टूस्ट्रिंग ()); // 2026-03-01T12:00:00-05:00[अमेरिका/न्यू_यार्क]।
पार्सिंग कइल जा रहल बा हमनी के तारीख आ समय के जानकारी के प्रोग्रामेटिक निर्माण के कवर कइले बानी जा. अब पार्सिंग के देखल जाव. पार्सिंग एगो अइसन क्षेत्र हवे जहाँ मोमेंट बिल्ट-इन टेम्पोरल एपीआई से ढेर लचीला होला। रउआँ कवनो तारीख स्ट्रिंग के मोमेंट फंक्शन में पास क के पार्स क सकत बानी। एकही आर्गुमेंट के साथ, मोमेंट आईएसओ डेट स्ट्रिंग के उम्मीद करे ला, बाकी अगर आप इस्तेमाल होखे वाला डेट फॉर्मेट के निर्दिष्ट करे वाला दुसरा आर्गुमेंट देब तब आप वैकल्पिक फॉर्मेट सभ के इस्तेमाल क सकत बानी।
const आइसोडेट = पल ('2026-02-21T09:00:00'); const formattedDate = पल ('2/21/26 9:00:00', 'एम / डी / वाईवाई एच: मिमी: एसएस');
कंसोल.लॉग (आइसोडेट) के बा; // पल <2026-02-21T09:00:00-05:00> के बा
console.log (स्वरूप कइल गइल तारीख); // पल <2026-02-21T09:00:00-05:00> के बा
पुरान संस्करण सभ में, मोमेंट कौनों भी मनमाना तरीका से फॉर्मेट कइल डेट स्ट्रिंग के पार्स करे खातिर सभसे नीक अनुमान लगाई। एकरा से अप्रत्याशित नतीजा हो सकता। जइसे कि 02-03-2026 2 फरवरी ह कि 3 मार्च? एही कारण से, मोमेंट के नया संस्करण सभ में अगर बिना ISO फॉर्मेट कइल डेट स्ट्रिंग के कॉल कइल जाय (जबले कि वांछित फॉर्मेट के साथ दूसरा आर्गुमेंट भी ना दिहल जाय) तब एगो प्रमुख डिप्रेशन चेतावनी देखावे ला। टेम्पोरल खाली एगो बिसेस रूप से फॉर्मेट कइल डेट स्ट्रिंग के पार्स करी। स्ट्रिंग के ISO 8601 फॉर्मेट या एकरे एक्सटेंशन, RFC 9557 के अनुरूप होखे के चाहीं अगर गैर-अनुरूप डेट स्ट्रिंग के from मेथड में पास कइल जाय तब टेम्पोरल RangeError फेंक दिही।
// एगो आरएफसी 9557 तारीख स्ट्रिंग के उपयोग कइल जा रहल बा const myDate = Temporal.Instant.from ('2026-02-21T09:00:00-05:00 [अमेरिका/न्यू_यार्क]'); console.log (myDate.toString ({ समय क्षेत्र: 'अमेरिका / न्यू_यार्क' })); // 2026-02-21T09:00:00-05:00 के बा
// एगो अज्ञात तारीख स्ट्रिंग के इस्तेमाल कइल जा रहल बा const otherDate = टेम्पोरल.इंस्टेंट.से ('2/21/26 9:00:00'); // RangeError: टेम्पोरल त्रुटि: साल के मान के पार्स करत समय अमान्य वर्ण।
डेट स्ट्रिंग के सटीक आवश्यकता एह बात पर निर्भर करेला कि रउआ कवना तरह के Temporal ऑब्जेक्ट बनावत बानी। उपर दिहल उदाहरण में टेम्पोरल.इंस्टेंट खातिर पूरा आईएसओ के जरूरत होला8601 या RFC 9557 डेट स्ट्रिंग जवन टाइम जोन ऑफसेट के साथ तारीख आ समय निर्दिष्ट करे ला, बाकी रउआँ डेट फॉर्मेट के खाली एगो सबसेट के इस्तेमाल से PlainDate या PlainTime ऑब्जेक्ट भी बना सकत बानी। const myDate = टेम्पोरल.प्लेनडेट.से ('2026-02-21'); कंसोल.लॉग (माईडेट.टूस्ट्रिंग ()); // 2026-02-21 के भइल
const myTime = टेम्पोरल.प्लेनटाइम.से ('09:00:00'); कंसोल.लॉग (माई टाइम.टूस्ट्रिंग ()); // 09:00:00 बजे के बा
ध्यान दीं कि ई स्ट्रिंग सभ अबहियों अपेक्षित फॉर्मेट के अनुपालन करे के पड़ी, ना त त्रुटि फेंकल जाई।
// एगो गैर-अनुरूप समय स्ट्रिंग्स के इस्तेमाल कइल। ई सब एगो RangeError फेंक दिही। टेम्पोरल.प्लेनटाइम.से ('9:00') के बा; टेम्पोरल.प्लेनटाइम.से ('9:00:00 बजे');
प्रो टिप: गैर-आईएसओ स्ट्रिंग के संभालल काहे कि टेम्पोरल विश्वसनीयता के प्राथमिकता देला, एहसे ई 02-01-2026 जइसन स्ट्रिंग के फॉर्मेट के अंदाजा लगावे के कोशिश ना करी. अगर राउर डेटा स्रोत अइसन स्ट्रिंग सभ के इस्तेमाल करे ला तब टेम्पोरल के साथ इस्तेमाल करे के कोसिस करे से पहिले मान सभ के 2026-02-01 नियर ISO स्ट्रिंग में फिर से व्यवस्थित करे खातिर कुछ स्ट्रिंग हेरफेर करे के पड़ी।
स्वरूपण कइल जा रहल बा एक बेर रउरा लगे Moment भा Temporal ऑब्जेक्ट हो गइल त शायद रउरा ओकरा के कवनो समय फॉर्मेट कइल स्ट्रिंग में बदलल चाहब. ई एगो अइसन उदाहरण बा जहाँ मोमेंट तनी अधिका संक्षिप्त बा. रउआँ ऑब्जेक्ट के फॉर्मेट मेथड के टोकन के स्ट्रिंग के साथ कॉल करीं जवन वांछित डेट फॉर्मेट के वर्णन करेला। const तारीख = पल () के बा;
कंसोल.लॉग (तिथि. प्रारूप ('एमएम / डीडी / YYYY')); // 02/22/2026 के भइल
कंसोल.लॉग (तिथि. प्रारूप ('एमएमएमएम वाईवाईवाईवाई, एच: मिमी: एसएस ए')); // 22 फरवरी 2026, रात 8:18:30 बजे के बा
दोसरा तरफ टेम्पोरल में तनी अधिका मुखर होखे के पड़ेला. टेम्पोरल ऑब्जेक्ट सभ, जइसे कि इंस्टेंट, में toLocaleString मेथड होला जे कौनों ऑब्जेक्ट के गुण के रूप में निर्दिष्ट बिबिध फॉर्मेटिंग विकल्प सभ के स्वीकार करे ला।
const तारीख = टेम्पोरल.अब.इंस्टेंट ();
// कवनो तर्क के बिना, हमनी के वर्तमान लोकेल खातिर डिफ़ॉल्ट फॉर्मेट मिल जाई कंसोल.लॉग (तिथि.टूलोकेलस्ट्रिंग ()); // 2/22/2026, 8:23:36 PM (एन-यूएस के लोकेल मान के)
// कस्टम फॉर्मेट स्ट्रिंग जनरेट करे खातिर फॉर्मेटिंग विकल्प पास करीं console.log (तारीख.toLocaleString ('एन-अमेरिका', { महीना: 'लंबा', 1999 में भइल। दिन: 'संख्यात्मक', 1999 में भइल। साल: 'संख्यात्मक', 1999 में भइल। घंटा: '2 अंक के', 1999 के बा। मिनट: '2 अंक के'। })) के बा; // 22 फरवरी, 2026 के रात 8:23 बजे भइल
// खाली उहे फील्ड पास करीं जवन रउआ फॉर्मेट स्ट्रिंग में चाहत बानी console.log (तारीख.toLocaleString ('एन-अमेरिका', { महीना: 'छोट', 1999 में भइल। दिन: 'संख्यात्मक' के बा। })) के बा; // 22 फरवरी के भइल
टेम्पोरल डेट फॉर्मेटिंग में वास्तव में हुड के नीचे Intl.DateTimeFormat एपीआई (जवन आधुनिक ब्राउजर में पहिले से आसानी से उपलब्ध बा) के इस्तेमाल होला। मतलब कि रउआँ अपना कस्टम फॉर्मेटिंग विकल्प के साथ एगो दोबारा इस्तेमाल करे लायक DateTimeFormat ऑब्जेक्ट बना सकत बानी, फिर Temporal ऑब्जेक्ट के ओकर फॉर्मेट मेथड में पास कर सकत बानी। एकरा चलते इ मोमेंट निहन कस्टम डेट फॉर्मेट के सपोर्ट नईखे करत। अगर रउआँ के 'Q1 2026' भा अउरी कौनों बिसेस फॉर्मेटिंग जइसन चीज के जरूरत बा, त रउआँ के कुछ कस्टम डेट फॉर्मेटिंग कोड के जरूरत पड़ सके ला या थर्ड पार्टी लाइब्रेरी खातिर पहुँच के जरूरत पड़ सके ला। const formatter = नया Intl.DateTimeFormat ('एन-अमेरिका', { महीना: '2 अंक के', 1999 में भइल रहे। दिन: '2 अंक के', 1999 में भइल। साल: 'संख्यात्मक' के बा। });
const तारीख = टेम्पोरल.अब.इंस्टेंट (); कंसोल.लॉग (फॉर्मेटर.फॉर्मेट (तिथि)); // 02/22/2026 के भइल
मोमेंट के फॉर्मेटिंग टोकन लिखल आसान बा, लेकिन इ लोकेल के अनुकूल नईखे। प्रारूप में महीना/दिन के क्रम जइसन चीजन के “हार्ड कोड” स्ट्रिंग कइल गइल बा. कॉन्फ़िगरेशन ऑब्जेक्ट के इस्तेमाल के फायदा, जइसे कि टेम्पोरल करेला, ई बा कि ई स्वचालित रूप से कवनो भी लोकेल के अनुकूल हो जाई आ सही फॉर्मेट के इस्तेमाल करी। const तारीख = टेम्पोरल.अब.इंस्टेंट ();
const formatविकल्प = { के बा। महीना: 'संख्यात्मक', 1999 में भइल। दिन: 'संख्यात्मक', 1999 में भइल। साल: 'संख्यात्मक' के बा। } के बा;
console.log (date.toLocaleString ('एन-अमेरिका', प्रारूपविकल्प)); // 2/22/2026 के भइल
console.log (date.toLocaleString ('एन-जीबी', प्रारूपविकल्प)); // 22/02/2026 के भइल
तारीख के गणना कइल जाला कई गो एप्लीकेशन में, रउरा के अंत में कुछ गणना कवनो तारीख पर करे के पड़ी. रउआँ समय के इकाई (दिन, घंटा, सेकंड इत्यादि) जोड़ल भा घटावल चाहत होखीं। उदाहरण खातिर, अगर आपके लगे वर्तमान तारीख बा, त आप प्रयोगकर्ता के अब से 1 हप्ता बाद के तारीख देखावल चाहत होखीं। मोमेंट ऑब्जेक्ट सभ में जोड़ आ घटावल नियर तरीका होलें जे एह ऑपरेशन सभ के करे लें। ई फंक्शन सभ एगो मान आ एगो इकाई लेलें, उदाहरण खातिर: add(7, 'days')। हालाँकि, मोमेंट आ टेम्पोरल में एगो बहुत महत्व के अंतर ई बा कि जब एह तिथि के गणना सभ के कइल जाला तब अंतर्निहित ऑब्जेक्ट में संशोधन हो जाला आ ओकर मूल मान खतम हो जाला। const अब = पल () के बा;
कंसोल.लॉग (अब) के बा; // पल <2026-02-24T20:08:36-05:00> के बा
const nextWeek = अब.जोड़े (7, 'दिन'); कंसोल.लॉग (अगिला हफ्ता) के बा; // पल <2026-03-03T20:08:36-05:00> के बा
// गोत्चा - मूल वस्तु के उत्परिवर्तित कइल गइल कंसोल.लॉग (अब) के बा; // पल <2026-03-03T20:08:36-05:00> के बा
मूल तारीख के गँवावे से बचे खातिर, रउआँ Moment ऑब्जेक्ट पर क्लोन के कॉल क के कॉपी बना सकत बानी। const अब बा= पल () के बा; const nextWeek = अब.क्लोन (). जोड़ें (7, 'दिन');
कंसोल.लॉग (अब) के बा; // पल <2026-02-24T20:12:55-05:00> के बा
कंसोल.लॉग (अगिला हफ्ता) के बा; // पल <2026-03-03T20:12:55-05:00> के बा
दूसर ओर टेम्पोरल ऑब्जेक्ट अपरिवर्तनीय होला। एक बेर रउरा कवनो इंस्टेंट, प्लेनडेट वगैरह जइसन ऑब्जेक्ट बना लिहले बानी त ओह ऑब्जेक्ट के मान कबो ना बदल पाई. टेम्पोरल ऑब्जेक्ट सभ में भी जोड़ आ घटावे के तरीका होला। टेम्पोरल एह बात पर तनी चुनिंदा होला कि कवन समय इकाई के कवना ऑब्जेक्ट टाइप में जोड़ल जा सकेला. उदाहरण खातिर, रउआ कवनो इंस्टेंट में दिन ना जोड़ सकेनी:
const अब = टेम्पोरल.अब.इंस्टेंट (); const nextWeek = अब.जोड़े ({ दिन: 7 }); // RangeError: टेम्पोरल त्रुटि: सबसे बड़ इकाई तारीख इकाई ना हो सकेला
एकर कारण ई बा कि इंस्टेंट ऑब्जेक्ट यूटीसी में समय के एगो बिसेस बिंदु के प्रतिनिधित्व करे लें आ कैलेंडर-अज्ञेयवादी होलें। चुकी डेलाइट सेविंग टाइम जईसन टाइम जोन के नियम के आधार प दिन के लंबाई बदल सकता, एहसे इ गणना इंस्टेंट प उपलब्ध नईखे। हालाँकि, रउआँ ई ऑपरेशन अन्य प्रकार के ऑब्जेक्ट सभ पर कर सकत बानी, जइसे कि PlainDateTime: const अब = टेम्पोरल.अब.प्लेनडेटटाइमआईएसओ (); कंसोल.लॉग (अब.टूलोकेलस्ट्रिंग ()); // 2/24/2026, 8:23:59 बजे के बा
const nextWeek = अब.जोड़ें ({ दिन: 7 });
// ध्यान दीं कि मूल PlainDateTime अपरिवर्तित बा कंसोल.लॉग (अब.टूलोकेलस्ट्रिंग ()); // 2/24/2026, 8:23:59 बजे के बा
कंसोल.लॉग (अगिला हफ्ता.टूलोकेलस्ट्रिंग ()); // 3/3/2026, 8:23:59 बजे के बा
रउआँ इहो गणना कर सकत बानी कि दू गो Moment भा Temporal ऑब्जेक्ट के बीच केतना समय बा। Moment’s diff function के साथ, रउआँ के दानेदारता खातिर एगो यूनिट उपलब्ध करावे के पड़ी, ना त ई अंतर मिलीसेकंड में वापस कर दिही। const date1 = पल ('2026-02-21T09:00:00') के रूप में बा; const date2 = पल ('2026-02-22T10:30:00') के रूप में बा;
कंसोल.लॉग (तिथि 2. अंतर (तिथि 1)); // 91800000 के बा
कंसोल.लॉग (तिथि 2. अंतर (तिथि 1, 'दिन')); // 1 के बा
टेम्पोरल ऑब्जेक्ट के साथ अइसन करे खातिर रउआँ एगो अउरी टेम्पोरल ऑब्जेक्ट के ओकर until या since मेथड में पास कर सकत बानी। एह से एगो Temporal.Duration ऑब्जेक्ट रिटर्न होला जेह में समय के अंतर के बारे में जानकारी होला। अवधि ऑब्जेक्ट में अंतर के हर घटक खातिर गुण होला, आ समय अंतर के प्रतिनिधित्व करे वाला ISO 8601 अवधि स्ट्रिंग भी पैदा क सके ला।
const date1 = टेम्पोरल.सादातिथिसमय.से ('2026-02-21T09:00:00'); const date2 = टेम्पोरल.सादातिथिसमय.से ('2026-02-22T10:30:00');
// largestUnit प्रतिनिधित्व करे खातिर समय के सबसे बड़ इकाई निर्दिष्ट करेला // अवधि के गणना में बा const diff = date2.since (तिथि 1, { सबसे बड़ इकाई: 'दिन' });
कंसोल.लॉग (अंतर.दिन) के बा; // 1 के बा
कंसोल.लॉग (अंतर.घंटा) के बा; // 1 के बा
कंसोल.लॉग (अंतर.मिनट) के बा; // 30 के बा
कंसोल.लॉग (diff.toString ()) के रूप में बा; // पी1डीटी1एच30एम के बा // (आईएसओ 8601 अवधि स्ट्रिंग: 1 दिन, 1 घंटा, 30 मिनट)
तारीख आ समय के तुलना कइल मोमेंट आ टेम्पोरल दुनों रउआँ के तारीख आ समय के तुलना क के ई तय करे के सुविधा देला कि कवन दुसरा से पहिले आवे ला, बाकी एपीआई के साथ अलग-अलग तरीका अपनावे ला। मोमेंट दू गो Moment ऑब्जेक्ट सभ के तुलना करे खातिर isBefore, isAfter, आ isSame नियर तरीका उपलब्ध करावे ला। const date1 = पल ('2026-02-21T09:00:00') के रूप में बा; const date2 = पल ('2026-02-22T10:30:00') के रूप में बा;
कंसोल.लॉग (तारीख1.पहिले बा (तारीख2)); // सही बा
टेम्पोरल एकही प्रकार के दू गो ऑब्जेक्ट सभ के बीच तुलना करे खातिर स्थिर तुलना तरीका के इस्तेमाल करे ला। ई -1 रिटर्न करे ला अगर पहिली तारीख दुसरा से पहिले आवे ले, 0 अगर ई बराबर होखे, या 1 अगर पहिला तारीख दुसरा के बाद आवे। निम्नलिखित उदाहरण में देखावल गइल बा कि दू गो PlainDate ऑब्जेक्ट के तुलना कइसे कइल जाला। Temporal.PlainDate.compare के दुनों आर्गुमेंट PlainDate ऑब्जेक्ट होखे के चाहीं।
const date1 = Temporal.PlainDate.from ({ साल: 2026, महीना: 2, दिन: 24 }); const date2 = Temporal.PlainDate.from ({ साल: 2026, महीना: 3, दिन: 24 });
// date1 date2 से पहिले आवेला, एहसे -1 console.log (अस्थायी.सादातिथि.तुलना (तिथि1, तारीख2));
// त्रुटि अगर हमनी के अलग-अलग प्रकार के दू गो ऑब्जेक्ट के तुलना करे के कोशिश करीं जा console.log (अस्थायी.सादातिथि.तुलना (तारीख1, अस्थायी.अब.तुरंत ())); // TypeError: टेम्पोरल त्रुटि: अमान्य PlainDate फील्ड दिहल गइल बा।
खासतौर पर एह से टेम्पोरल ऑब्जेक्ट सभ के सरणी के कालक्रम से सॉर्ट कइल आसान हो जाला। // Temporal.PlainDate ऑब्जेक्ट के एगो सरणी const तारीख = [ ... ] के बा;
// तुलनात्मक फ़ंक्शन के रूप में Temporal.PlainDate.compare के इस्तेमाल करीं तारीख.सॉर्ट (अस्थायी.सादातिथि.तुलना);
समय क्षेत्र के रूपांतरण के बारे में बतावल गइल बा कोर मोमेंट लाइब्रेरी टाइम जोन रूपांतरण के सपोर्ट नइखे करत. अगर रउआँ के ई कामकाज के जरूरत बा, त रउआँ के मोमेंट-टाइमजोन पैकेज के भी इंस्टॉल करे के पड़ी। ई पैकेज पेड़-पौधा के हिलावे वाला ना हवे, आ एह कारण ई आपके बंडल साइज में काफी जोड़ सके ला। एक बार जब रउआ moment-timezone इंस्टॉल कर लेब त रउआ tz विधि से Moment ऑब्जेक्ट के अलग-अलग टाइम जोन में बदल सकेनी। जइसे कि बाकी मोमेंट ऑपरेशन में होला, एह से अंतर्निहित के उत्परिवर्तन हो जालावस्तु। // अमेरिकी पूर्वी समय मान के const अब = पल () के बा; कंसोल.लॉग (अब) के बा; // पल <2026-02-28T20:08:20-05:00> के बा
// प्रशांत समय में बदलल जाला। // मूल पूर्वी समय खो गइल बा। now.tz ('अमेरिका / लॉस_एंजिल्स'); कंसोल.लॉग (अब) के बा; // पल <2026-02-28T17:08:20-08:00> के बा
टाइम जोन के कामकाज Temporal.ZonedDateTime ऑब्जेक्ट के इस्तेमाल करत समय Temporal API में बनावल जाला। एह ऑब्जेक्ट सभ में withTimeZone मेथड सामिल बा जे समय में एकही पल के प्रतिनिधित्व करे वाला नया ZonedDateTime रिटर्न करे ला, बाकी निर्दिष्ट समय क्षेत्र में। // फिर से, अमेरिका के पूर्वी समय मान के const अब = टेम्पोरल.अब.जोन कइल तारीखसमयआईएसओ (); कंसोल.लॉग (अब.टूलोकेलस्ट्रिंग ()); // 2/28/2026, 8:12:02 बजे ईएसटी के बा
// प्रशांत समय में बदलल जाला const nowPacific = now.withTimeZone ('अमेरिका / लॉस_एंजिल्स'); कंसोल.लॉग (अब प्रशांत.टूलोकेलस्ट्रिंग ()); // 2/28/2026, 5:12:02 बजे पीएसटी के बा
// मूल वस्तु अपरिवर्तित बा कंसोल.लॉग (अब.टूलोकेलस्ट्रिंग ()); // 2/28/2026, 8:12:02 बजे ईएसटी के बा
नोट: toLocaleString द्वारा वापस कइल गइल फॉर्मेट कइल मान, जइसे कि नाँव से पता चले ला, लोकेल-निर्भर होला। नमूना कोड एन-यूएस लोकेल में बिकसित कइल गइल बा, एह से एकर प्रारूप अइसन बा: 2/28/2026, 5:12:02 PM PST। एगो अउरी लोकेल में ई अलग हो सकेला। उदाहरण खातिर, एन-जीबी लोकेल में, रउआँ के कुछ अइसन मिल जाई जइसे कि 28/2/2026, 17:12:02 GMT-8। एगो वास्तविक दुनिया के रिफैक्टरिंग मान लीं कि हमनी का टाइम जोन में इवेंट शेड्यूलिंग खातिर एगो ऐप बनावत बानी जा. एह ऐप के एगो हिस्सा एगो फंक्शन बाटे, getEventTimes, जवन इवेंट के समय आ तारीख, स्थानीय समय क्षेत्र आ लक्ष्य समय क्षेत्र के प्रतिनिधित्व करे वाला ISO 8601 स्ट्रिंग लेला। फंक्शन दुनों टाइम जोन में इवेंट खातिर फॉर्मेट कइल टाइम आ डेट स्ट्रिंग बनावे ला। अगर फंक्शन के कवनो इनपुट स्ट्रिंग दिहल जाव जवन वैध समय/तिथि स्ट्रिंग ना होखे त ऊ एगो त्रुटि फेंक दी. इहाँ मूल कार्यान्वयन बा, मोमेंट के इस्तेमाल से (मोमेंट-टाइमजोन पैकेज के इस्तेमाल भी जरूरी बा)।
'पल-समय क्षेत्र' से क्षण आयात कइल;
फंक्शन getEventTimes (इनपुटस्ट्रिंग, यूजरटाइमजोन, टारगेटटाइमजोन) { const timeFormat = 'एमएमएम डी, वाईवाईवाईवाई, एच: मिमी: एसएस एगो जेड';
// 1. उपयोगकर्ता के समय क्षेत्र में प्रारंभिक क्षण बनाईं const घटनासमय = पल.tz ( 1999 के बा। इनपुटस्ट्रिंग, 1999 के बा। moment.ISO_8601, // ISO 8601 स्ट्रिंग के उम्मीद बा सही बा, // सख्त पार्सिंग बा यूजरटाइमजोन के बा );
// अगर inputString कवनो वैध तारीख के प्रतिनिधित्व ना करत रहे त एगो त्रुटि फेंकीं अगर (! इवेंटटाइम.इजवैलिड ()) { throw new Error ('अमान्य तारीख / समय इनपुट'); } 1999 में भइल रहे।
// 2. लक्ष्य समय के गणना करीं // CRITICAL: हमनी के क्लोन करे के होई, ना त 'eventTime' हमेशा खातिर बदल जाला! const targetTime = इवेंटटाइम.क्लोन ()।tz (लक्ष्यसमयक्षेत्र);
return { 1999 के बा। स्थानीय: घटनासमय.स्वरूप (समय प्रारूप), 1999 के बा। लक्ष्य: targetTime.format (समय प्रारूप), 1999 के बा। } के बा; } 1999 में भइल रहे।
const शेड्यूल = घटनासमय प्राप्त करीं ( '2026-03-05T15:00-05:00', के बा। 'अमेरिका/न्यू_यार्क', 1999 में भइल। 'यूरोप/लंदन', 1999 में भइल। );
कंसोल.लॉग (शेड्यूल.स्थानीय) के बा; // 5 मार्च, 2026, 3:00:00 बजे ईएसटी के बा
कंसोल.लॉग (शेड्यूल.लक्ष्य) के बा; // 5 मार्च, 2026, रात 8:00:00 बजे जीएमटी के बा
एह उदाहरण में हमनी के ISO 8601 के एगो अपेक्षित तिथि प्रारूप के इस्तेमाल कर रहल बानी जा, जवन मददगार तरीका से Moment में बनल बा। हमनी के सख्त पार्सिंग के भी इस्तेमाल कर रहल बानी जा, मतलब कि मोमेंट कवनो तारीख स्ट्रिंग से अनुमान लगावे के कोशिश ना करी जवन कि फॉर्मेट से मेल ना खाए। अगर गैर-आईएसओ डेट स्ट्रिंग पास हो जाला त एकर परिणाम अमान्य डेट ऑब्जेक्ट होई, आ हमनी के एगो त्रुटि फेंक देनी जा। टेम्पोरल के कार्यान्वयन भी एकही नियर लउके ला, बाकी कुछ प्रमुख अंतर बा।
फंक्शन getEventTimes (इनपुटस्ट्रिंग, यूजरटाइमजोन, टारगेटटाइमजोन) { // 1. इनपुट के सीधे एगो इंस्टेंट में पार्स करीं, फिर बनाईं // उपयोगकर्ता के क्षेत्र में एगो ZonedDateTime। const तत्काल = टेम्पोरल.इंस्टेंट.से (इनपुटस्ट्रिंग); const eventTime = तुरंत.toZonedDateTimeISO (उपयोगकर्ता समयक्षेत्र);
// 2. लक्ष्य क्षेत्र में बदलल जाला // ई स्वचालित रूप से एगो NEW ऑब्जेक्ट वापस कर देला; 'eventTime' सुरक्षित बा। const targetTime = घटनासमय.समयक्षेत्र के साथ (लक्ष्यसमयक्षेत्र);
// 3. Intl (बिल्ट-इन) के उपयोग से फॉर्मेट करीं। const विकल्प = { 1999 के बा। साल: 'संख्यात्मक', 1999 में भइल। महीना: 'छोट', 1999 में भइल। दिन: 'संख्यात्मक', 1999 में भइल। घंटा: 'संख्यात्मक', 1999 के बा। मिनट: '2 अंक के', 1999 के बा। दूसरा: '2 अंक के', 1999 में भइल। timeZoneName: 'छोट' बा। } के बा;
return { 1999 के बा। स्थानीय: eventTime.toLocaleString (नेविगेटर.भाषा, विकल्प), बा। लक्ष्य: targetTime.toLocaleString (नेविगेटर.भाषा, विकल्प) के बा। } के बा; } 1999 में भइल रहे।
const शेड्यूल = घटनासमय प्राप्त करीं ( '2026-03-05T15:00-05:00', के बा। 'अमेरिका/न्यू_यार्क', 1999 में भइल। 'यूरोप/लंदन', 1999 में भइल। );
कंसोल.लॉग (शेड्यूल.स्थानीय) के बा; // 5 मार्च, 2026, 3:00:00 बजे ईएसटी के बा
कंसोल.लॉग (शेड्यूल.लक्ष्य) के बा; // 5 मार्च, 2026, 8:00:00 बजे जीएमटी के बा
Moment के साथ, हमनी के परिणामस्वरूप डेट स्ट्रिंग खातिर एगो फॉर्मेट स्ट्रिंग के स्पष्ट रूप से निर्दिष्ट करे के पड़ी। चाहे प्रयोगकर्ता के स्थान भा लोकेल कवनो होखे, इवेंट के समय हमेशा Mar 5, 2026, 3:00:00 के रूप में फॉर्मेट कइल जाईpm EST के बा। साथही हमनी के कवनो अपवाद के स्पष्ट रूप से फेंके के जरूरत नइखे. अगर कवनो अमान्य स्ट्रिंग Temporal.Instant.from में पास हो जाला त Temporal हमनी खातिर अपवाद फेंक दिही। एगो बात ध्यान देवे के बा कि सख्त पार्सिंग के बावजूद भी मोमेंट वर्जन अभी भी जादा नरम बा। टेम्पोरल खातिर स्ट्रिंग के अंत में टाइम जोन ऑफसेट के जरूरत होला। रउआँ के इहो ध्यान देवे के चाहीं कि चूंकि हमनी के navigator.language के इस्तेमाल कर रहल बानी जा, एहसे ई कोड खाली ब्राउजर वातावरण में चलेला, काहे कि नेविगेटर Node.js वातावरण में परिभाषित ना होला। टेम्पोरल इम्प्लीमेंटेशन में ब्राउजर के वर्तमान लोकेल (navigator.language) के इस्तेमाल होला, एहसे यूजर के इवेंट टाइम के स्वचालित रूप से अपना लोकल टाइम फॉर्मेट में फॉर्मेट मिल जाई। एन-यूएस लोकेल में, ई 5 मार्च 2026, 3:00:00 बजे EST के बा। हालाँकि, अगर प्रयोगकर्ता उदाहरण खातिर लंदन में होखे तब इवेंट के समय 5 Mar 2026, 15:00:00 GMT-5 के रूप में फॉर्मेट कइल जाई। सारांश में कहल गइल बा
कार्रवाई के बारे में बतावल गइल बा मोमेंट.जेएस के बा टेम्पोरल के बा वर्तमान समय के बा पल () के बा। टेम्पोरल.अब.जोन कइल गइल तारीखसमयआईएसओ () आईएसओ के पार्सिंग कइल जा रहल बा पल(स्ट्र) के बा। टेम्पोरल.इंस्टेंट.से (स्ट्र) के बा। समय जोड़ल जाव .जोड़ो(7, 'दिन') (उत्परिवर्तित हो जाला) .add ({ दिन: 7 }) (नया वस्तु) के बा। अंतर के बात बा .diff(अन्य, 'घंटा') के बा। .जब से(अन्य).घंटा के बा समय क्षेत्र के बा .tz('जोन/नाम') के बा। .withTimeZone ('जोन/नाम') के बा।
पहिली नजर में ई अंतर तनिका अलग हो सके ला (आ टेम्पोरल के मामिला में, कबो-कबो ढेर वर्बोज आ ढेर सख्त) सिंटैक्स, बाकी Moment.js के तुलना में टेम्पोरल के इस्तेमाल के कई गो प्रमुख फायदा बा:
अधिका स्पष्ट होखे के मतलब होला कम आश्चर्य आ अनचाहा बग. पल अधिका नम्र लाग सकेला बाकिर एहमें “अंदाजा लगावल” शामिल होला जवना के परिणाम कबो कबो गलत तारीख हो सकेला. अगर रउआँ Temporal के कुछ अमान्य दे दीं त ऊ एगो त्रुटि फेंक देला। अगर कोड चलत बा त रउरा मालूम हो जाई कि रउरा वैध तारीख मिल गइल बा. मोमेंट एप्लीकेशन के बंडल में महत्वपूर्ण आकार जोड़ सकेला, खासकर अगर रउआ मोमेंट-टाइमजोन पैकेज के इस्तेमाल कर रहल बानी। टेम्पोरल कुछ ना जोड़त बा (एक बेर जब ऊ रउरा लक्षित ब्राउजर में भेज दिहल गइल बा). अपरिवर्तनीयता रउरा के भरोसा देला कि तारीख रूपांतरण आ ऑपरेशन करत घरी रउरा कबो डेटा ना गँवा दीं भा ओवरराइट ना करब. समय के अलग-अलग प्रतिनिधित्व (Instant, PlainDateTime, ZonedDateTime) आपके जरूरत के आधार पर, जहाँ Moment हमेशा UTC टाइमस्टैम्प के आसपास रैपर होला। टेम्पोरल डेट फॉर्मेटिंग खातिर Intl एपीआई सभ के इस्तेमाल करे ला, मने कि रउआँ के लोकेल-अवेयर फॉर्मेटिंग हो सके ला आ बिना टोकन के स्पष्ट रूप से निर्दिष्ट कइले।
पॉलीफिल पर नोट्स के बारे में बतावल गइल बा जइसन कि पहिले बतावल गइल बा, टेम्पोरल पॉलीफिल उपलब्ध बा, जेकरा के @js-temporal/polyfill नाँव के npm पैकेज के रूप में बितरित कइल जाला। अगर रउरा आजु टेम्पोरल के इस्तेमाल कइल चाहत बानी त सफारी जइसन ब्राउजर के सपोर्ट करे खातिर एह पॉलीफिल के जरूरत पड़ी जवन अबहीं ले एपीआई नइखे भेजले. एकरा संगे बुरा खबर इ बा कि एकरा से आपके बंडल के साइज में बढ़ोतरी होई। एगो नीमन खबर ई बा कि ई अबहियों मोमेंट भा मोमेंट-टाइमजोन से काफी कम जोड़ देला. इहाँ बंडल साइज सभ के तुलना कइल गइल बा जइसन कि बंडलफोबिया डॉट कॉम द्वारा रिपोर्ट कइल गइल बा, ई एगो वेबसाइट हवे जे npm पैकेज साइज सभ के जानकारी प्रस्तुत करे ले (बंडलफोबिया बिस्लेषण देखे खातिर हर पैकेज के नाँव पर क्लिक करीं):
पैकेज के बा मिनिफाइड कइल गइल बा मिनिफाइड & जीजिप कइल गइल @ जेएस-टेम्पोरल/पॉलीफिल के बा 154.1 केबी के बा 44.1 केबी के बा पल के बा 294.4 केबी के बा 75.4 केबी के बा पल-समय क्षेत्र के बा 1 एमबी के बा 114.2 केबी के बा
पॉलीफिल में भी ऐतिहासिक रूप से मेमोरी के इस्तेमाल के आसपास कुछ परफार्मेंस के मुद्दा रहल बा, आ ई लेख लिखे के समय, एकरा के अल्फा स्टेट में मानल जाला। एकरा चलते रउरा एकर इस्तेमाल तबले उत्पादन में ना कइल चाहब जबले ई अधिका परिपक्व अवस्था में ना चहुँप जाव. दूसर बढ़िया खबर इ बा कि उम्मीद बा कि पॉलीफिल के जरूरत अवुरी जादे ना होई (जब तक कि आपके पुरान ब्राउज़र के सपोर्ट करे के जरूरत ना पड़ी, बेशक)। ई खबर लिखे के समय टेम्पोरल क्रोम, एज, आ फायरफॉक्स में भेजल गइल बा। सफारी में अभी तक इ पूरा तरीका से तैयार नईखे भईल, हालांकि इ नवीनतम टेक्नोलॉजी प्रीव्यू प रनटाइम फ्लैग के संगे उपलब्ध देखाई देता।