javascript - जावास्क्रिप्ट में मान्य दिनांक समय स्ट्रिंग्स क्या हैं?




string date (2)

जावास्क्रिप्ट में new Date या Date.parse का उपयोग करते समय, मैं सिर्फ मनमाने ढंग से दिनांक स्वरूपों को पारित नहीं कर सकता। प्रारूप के आधार पर, मुझे एक अलग दिनांक मिलती है, जो मैं किसी दिनांक वस्तु के बजाय Invalid Date या यहां तक ​​कि Invalid Date को चाहता था। कुछ दिनांक प्रारूप एक ब्राउज़र में काम करते हैं लेकिन अन्य में नहीं। तो मुझे किस समय प्रारूप का उपयोग करना चाहिए?

अतिरिक्त प्रशन:

  • क्या सभी ब्राउज़र समान स्वरूपों का समर्थन करते हैं? मोज़िला फ़ायरफ़ॉक्स, गूगल क्रोम, माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर, माइक्रोसॉफ्ट एज, और ऐप्पल सफ़ारी की तारीख के तार कैसे बदलते हैं? Node.js के बारे में क्या?

  • क्या यह स्थानीय तिथि प्रारूप को ध्यान में रखता है? उदाहरण के लिए, यदि मैं स्विट्जरलैंड में रहता हूं और दिनांक प्रारूप 30.07.2018 है, तो क्या मैं new Date('30.07.2018') उपयोग कर सकता हूं?

  • क्या यह स्थानीय समय क्षेत्र को ध्यान में रखता है?

  • मैं किसी दिनांक ऑब्जेक्ट से दिनांक समय स्ट्रिंग कैसे प्राप्त कर सकता हूं?

  • मैं अमान्य दिनांक समय स्ट्रिंग का पता कैसे लगा सकता हूँ?

  • मोमेंट्स.जैसे डेट लाइब्रेरियों को डेट लाइब्रेरी कैसे बनाते हैं?

यदि आपने ध्यान नहीं दिया, तो मैंने अपने प्रश्न का उत्तर दिया ( why? )।


तो मुझे किस समय प्रारूप का उपयोग करना चाहिए?

सामान्य अनुशंसा बिल्ट-इन पार्सर का उपयोग नहीं करना है क्योंकि यह अविश्वसनीय है, इसलिए "चाहिए" का उत्तर "कोई नहीं" है। देखें क्यों Date.parse गलत परिणाम देता है?

हालाँकि, जैसा कि str कहते हैं, आप ECMA-262 में निर्दिष्ट प्रारूप का समय YYYY-MM-DDTHH:mm:ss.sssZ समय पर उपयोग कर सकते हैं: YYYY-MM-DDTHH:mm:ss.sssZ या YYYY-MM-DDTHH:mm:ss.sss±HH:mm , don 'किसी अन्य प्रारूप पर भरोसा मत करो।

क्या सभी ब्राउज़र समान स्वरूपों का समर्थन करते हैं?

नहीं।

मोज़िला फ़ायरफ़ॉक्स, गूगल क्रोम, माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर, माइक्रोसॉफ्ट एज, और ऐप्पल सफ़ारी की तारीख के तार कैसे बदलते हैं?

अलग ढंग से। ECMA-262 में प्रारूप के अलावा कुछ भी कार्यान्वयन निर्भर है, और ECMA-262 प्रारूप को पार्स करने में कीड़े हैं।

Node.js के बारे में क्या?

फिर से अलग, ऊपर देखें।

क्या यह स्थानीय तिथि प्रारूप को ध्यान में रखता है? उदाहरण के लिए, यदि मैं स्विट्जरलैंड में रहता हूं और दिनांक प्रारूप 30.07.2018 है, तो क्या मैं नई तिथि ('30 .07.2018 ') का उपयोग कर सकता हूं?

शायद। चूंकि यह मानक प्रारूप नहीं है, पार्सिंग कार्यान्वयन पर निर्भर है, इसलिए शायद, शायद नहीं।

क्या यह स्थानीय समय क्षेत्र को ध्यान में रखता है?

यह होस्ट टाइमज़ोन ऑफसेट का उपयोग करता है जहां स्ट्रिंग को स्थानीय के रूप में पार्स किया जाता है और स्थानीय समय का उपयोग करके प्रदर्शित स्ट्रिंग उत्पन्न करने के लिए। अन्यथा यह यूटीसी (और आंतरिक समय मूल्य यूटीसी है) का उपयोग करता है।

मैं किसी दिनांक ऑब्जेक्ट से दिनांक समय स्ट्रिंग कैसे प्राप्त कर सकता हूं?

Date.prototype.toString() , या देखें कि मैं जावास्क्रिप्ट में एक तारीख को प्रारूपित करने के लिए दस्तावेज़ीकरण कहां पा सकता हूं?

मैं अमान्य दिनांक समय स्ट्रिंग का पता कैसे लगा सकता हूँ?

here पहले 3 उत्तरों में से एक का उत्तर देना चाहिए।

मोमेंट्स.जैसे डेट लाइब्रेरियों को डेट लाइब्रेरी कैसे बनाते हैं?

वे उन्हें डिफ़ॉल्ट या प्रदान किए गए प्रारूप के आधार पर पार्स करते हैं। स्रोत पढ़ें (उदाहरण के लिए fecha.js एक सरल पार्सर है और अच्छी तरह से लिखा गया है, कोड का पालन करना आसान है)।

एक पार्सर लिखना मुश्किल नहीं है, लेकिन इनपुट प्रारूप का अनुमान लगाने की कोशिश कर रहा है (जैसा कि अंतर्निहित पार्सर करते हैं) कार्यान्वयन के पार, अविश्वसनीय और असंगत है। तो पार्सर को प्रारूप प्रदान करने की आवश्यकता होनी चाहिए जब तक कि इनपुट स्ट्रिंग पार्सर के डिफ़ॉल्ट प्रारूप में न हो।

पुनश्च

ECMAScript 2019 (वर्तमान में ड्राफ्ट) में पार्सिंग और स्वरूपण के लिए कार्यान्वयन को समर्थन देने वाले स्ट्रिंग्स के स्वरूपों में परिवर्तन हैं, लेकिन मुझे लगता है कि अंतर्निहित पार्सर से बचने के लिए सामान्य सलाह कुछ समय के लिए रहेगी।


आवश्यक

जावास्क्रिप्ट आधिकारिक तौर पर आईएसओ 8601 विस्तारित प्रारूप के सरलीकरण का समर्थन करता है। प्रारूप इस प्रकार है: YYYY-MM-DDTHH:mm:ss.sssZ । अक्षर T , तिथि / समय विभाजक है और Z , Z (UTC के लिए) या तो + या - एक समय अभिव्यक्ति HH:mm रूप में निर्दिष्ट समय क्षेत्र ऑफसेट HH:mm । उस प्रारूप के कुछ भाग (जैसे समय) को छोड़ा जा सकता है।

ध्यान दें कि वर्षों में कम से कम चार अंक होने चाहिए , महीने / दिन / घंटे / मिनट / सेकंड में बिल्कुल दो अंक होने चाहिए , और मिलीसेकंड के ठीक तीन अंक होने चाहिए । उदाहरण के लिए, 99-1-1 एक वैध तारीख स्ट्रिंग नहीं है।

ये मान्य दिनांक (समय) के कुछ उदाहरण हैं:

  • 2018-12-30
  • 2018-12-30T20:59
  • 2018-12-30T20:59:00
  • 2018-12-30T20:59:00.000Z
  • 2018-12-30T20:59:00.000+01:00
  • 2018-12-30T20:59:00.000-01:00

जब आप समय क्षेत्र ऑफ़सेट को छोड़ देते हैं, तो दिनांक-समय की व्याख्या उपयोगकर्ता स्थानीय समय के रूप में की जाती है। जब आप समय को पूरी तरह से छोड़ देते हैं, तो तिथियों की व्याख्या यूटीसी के रूप में की जाती है।

महत्वपूर्ण : सभी आधुनिक और यथोचित पुराने ब्राउज़र और कार्यान्वयन विनिर्देश के अनुसार पूर्ण-लंबाई दिनांक समय प्रारूप का समर्थन करते हैं। हालांकि , समय क्षेत्र के बिना तारीख (समय) के तारों की हैंडलिंग में अंतर हैं (विवरण के नीचे "मिसिंग टाइम ज़ोन ऑफसेट" देखें)। आपको बिना टाइम ज़ोन (स्थिति 2018) के डेट टाइम स्ट्रिंग्स का उपयोग नहीं करना चाहिए। इसके बजाय एक यूनिक्स टाइमस्टैम्प को मिलीसेकंड में पास करें या Date निर्माण के लिए तारीख के विभिन्न हिस्सों के लिए अलग-अलग तर्क दें

अधिकांश ब्राउज़र कुछ अन्य स्वरूपों का भी समर्थन करते हैं, लेकिन वे निर्दिष्ट नहीं होते हैं और इस तरह सभी ब्राउज़रों में उसी तरह काम नहीं करते हैं। यदि बिल्कुल भी, तो आपको केवल ऊपर बताए गए दिनांक समय स्ट्रिंग स्वरूपों का उपयोग करना चाहिए। प्रत्येक अन्य प्रारूप अन्य ब्राउज़र में या उसी ब्राउज़र के अन्य संस्करणों में भी टूट सकता है।

यदि आप किसी दिनांक ऑब्जेक्ट के बजाय Invalid Date में चलते हैं, तो आप संभवतः अमान्य दिनांक समय स्ट्रिंग का उपयोग कर रहे हैं।

और अब थोड़ा और विस्तार के साथ।

दिनांक समय स्ट्रिंग प्रारूप

ECMAScript (विनिर्देशन जो जावास्क्रिप्ट भाषा का कार्यान्वयन specification ) अपनी स्थापना के बाद से new Date ( specification ) और Date.parse ( specification ) में तारीख के तार का समर्थन कर रहा है। हालाँकि, पहले संस्करणों में वास्तव में दिनांक समय प्रारूप नहीं था। यह 2009 में बदल गया जब ES5 को एक तारीख समय प्रारूप के विनिर्देश के साथ पेश किया गया था।

मूल बातें

ECMAScript आईएसओ 8601 विस्तारित प्रारूप के सरलीकरण के रूप में दिनांक समय स्ट्रिंग प्रारूप को निर्दिष्ट करता है। प्रारूप इस प्रकार है: YYYY-MM-DDTHH:mm:ss.sssZ

  • YYYY प्रोलेप्टिक ग्रेगोरियन कैलेंडर में वर्ष 0000 से 9999 तक के दशमलव अंक हैं।
  • - (हाइफ़न) स्ट्रिंग में सचमुच दो बार दिखाई देता है।
  • MM वर्ष का महीना 01 (जनवरी) से 12 (दिसंबर) है।
  • DD महीने का दिन 01 से 31 तक है।
  • T शाब्दिक रूप से स्ट्रिंग में दिखाई देता है, समय तत्व की शुरुआत को इंगित करने के लिए।
  • HH पूरे घंटे की संख्या है जो आधी रात के बाद से दो दशमलव अंकों के रूप में 00 से 24 तक हो गई है।
  • : (बृहदान्त्र) सचमुच स्ट्रिंग में दो बार दिखाई देता है।
  • mm , घंटे की शुरुआत से लेकर 00 से 59 तक दो दशमलव अंकों के रूप में पूर्ण मिनटों की संख्या है।
  • ss मिनट की शुरुआत से दो दशमलव अंकों के रूप में 00 से 59 तक पूर्ण सेकंड की संख्या है।
  • . (डॉट) सचमुच स्ट्रिंग में दिखाई देता है।
  • sss , तीन दशमलव अंकों के रूप में दूसरे की शुरुआत से पूर्ण मिलीसेकंड की संख्या है।
  • Z "Z" (UTC के लिए) या "+" या "-" के रूप में निर्दिष्ट समय क्षेत्र ऑफ़सेट है, इसके बाद समय अभिव्यक्ति HH:mm

विनिर्देश में यह भी mentions कि यदि "स्ट्रिंग [निर्दिष्ट] प्रारूप के अनुरूप नहीं है, तो फ़ंक्शन किसी भी कार्यान्वयन-विशिष्ट उत्तराधिकार या कार्यान्वयन-विशिष्ट दिनांक स्वरूपों पर वापस आ सकता है" जिसके परिणामस्वरूप विभिन्न ब्राउज़रों में भिन्न तिथियां हो सकती हैं।

ECMAScript किसी भी उपयोगकर्ता की स्थानीय तारीख के समय के प्रारूप को ध्यान में नहीं रखता है, जिसका अर्थ है कि आप देश या क्षेत्र-विशिष्ट तिथि समय प्रारूपों का उपयोग नहीं कर सकते हैं।

लघु तिथि (और समय) प्रपत्र

विनिर्देशन में निम्न प्रारूप भी शामिल हैं।

इस प्रारूप में केवल दिनांक के रूप शामिल हैं:

  • YYYY
  • YYYY-MM
  • YYYY-MM-DD

इसमें "दिनांक-समय" फ़ॉर्म भी शामिल हैं, जिनमें से एक उपरोक्त दिनांक-केवल रूपों में से एक है, इसके तुरंत बाद एक वैकल्पिक समय क्षेत्र ऑफसेट के साथ निम्नलिखित रूपों में से एक है:

  • THH:mm
  • THH:mm:ss
  • THH:mm:ss.sss

पतन का मान

[...] यदि MM या DD फ़ील्ड अनुपस्थित हैं "01" का उपयोग मान के रूप में किया जाता है। यदि HH , mm , या ss फ़ील्ड अनुपस्थित हैं "00" का उपयोग मान के रूप में किया जाता है और अनुपस्थित sss फ़ील्ड का मान "000" । जब समय क्षेत्र अनुपस्थित है, तो दिनांक-केवल प्रपत्रों को UTC समय के रूप में व्याख्या की जाती है और दिनांक-समय प्रपत्रों की स्थानीय समय के रूप में व्याख्या की जाती है।

कमी ब्राउज़र समर्थन के बारे में अधिक जानकारी के लिए नीचे "मिसिंग टाइम ज़ोन ऑफसेट" देखें।

बाउंड वैल्यू से बाहर

प्रारूप स्ट्रिंग में अवैध मान (आउट-ऑफ-बाउंड्स और साथ ही सिंटैक्स त्रुटियां) का अर्थ है कि प्रारूप स्ट्रिंग इस प्रारूप का मान्य उदाहरण नहीं है।

उदाहरण के लिए, new Date('2018-01-32') और new Date('2018-02-29') का परिणाम Invalid Date

विस्तारित वर्ष

ईसीएमएस्क्रिप्ट का दिनांक समय प्रारूप भी विस्तारित वर्षों को निर्दिष्ट करता है जो छह अंकों के वर्ष मान हैं। इस तरह के एक विस्तारित वर्ष स्ट्रिंग प्रारूप का एक उदाहरण +287396-10-12T08:59:00.992Z जैसा दिखता है जो वर्ष 287396 ई। में एक तारीख को दर्शाता है विस्तारित वर्ष या तो सकारात्मक या नकारात्मक हो सकते हैं।

तारीख एपीआई

ECMAScript दिनांक ऑब्जेक्ट गुणों की एक विस्तृत श्रृंखला निर्दिष्ट करता है। मान्य दिनांक ऑब्जेक्ट को देखते हुए, आप मान्य दिनांक समय स्ट्रिंग प्राप्त करने के लिए Date.prototype.toISOString() का उपयोग कर सकते हैं। ध्यान दें कि समय क्षेत्र हमेशा यूटीसी होता है।

new Date().toISOString() // "2018-08-05T20:19:50.905Z"

निम्न फ़ंक्शन का उपयोग करके यह पता लगाना भी संभव है कि दिनांक ऑब्जेक्ट मान्य है या Invalid Date

function isValidDate(d) {
  return d instanceof Date && !isNaN(d);
}

स्रोत और अधिक जानकारी जावास्क्रिप्ट में "अमान्य दिनांक" दिनांक उदाहरण का पता लगाने में पाया जा सकता है।

उदाहरण

मान्य दिनांक समय प्रारूप

निम्नलिखित दिनांक समय प्रारूप विनिर्देश के अनुसार सभी मान्य हैं और प्रत्येक ब्राउज़र में काम करना चाहिए, Node.js या अन्य कार्यान्वयन जो ES2016 या उच्चतर का समर्थन करते हैं।

2018
2018-01
2018-01-01
2018-01-01T00:00
2018-01-01T00:00:00
2018-01-01T00:00:00.000
2018-01-01T00:00:00.000Z
2018-01-01T00:00:00.000+01:00
2018-01-01T00:00:00.000-01:00
+002018-01-01T00:00:00.000+01:00

अमान्य दिनांक समय प्रारूप

ध्यान दें कि विनिर्देश के अनुसार निम्नलिखित उदाहरण अमान्य हैं। हालांकि, इसका मतलब यह नहीं है कि कोई भी ब्राउज़र या अन्य कार्यान्वयन उन्हें किसी तिथि पर व्याख्या नहीं करता है। कृपया नीचे दिए गए किसी भी समय प्रारूप का उपयोग न करें क्योंकि वे गैर-मानक हैं और कुछ ब्राउज़रों या ब्राउज़र संस्करणों में विफल हो सकते हैं।

2018-1-1 // month and date must be two digits
2018-01-01T0:0:0.0 // hour/minute/second must be two digits, millisecond must be three digits
2018-01-01 00:00 // whitespace must be "T" instead
2018-01-01T00 // shortest time part must have format HH:mm
2018-01-01T00:00:00.000+01 // time zone must have format HH:mm

ब्राउज़र का समर्थन

आज, प्रत्येक आधुनिक और उचित रूप से पुराना ब्राउज़र 2009 में ES5 विनिर्देश के साथ पेश किए गए दिनांक समय प्रारूप का समर्थन करता है। हालांकि, आज भी (स्थिति 2018) समय क्षेत्र के बिना तारीख के समय के लिए अलग-अलग कार्यान्वयन हैं (देखें "समय क्षेत्र छूटना" " नीचे)। यदि आपको पुराने ब्राउज़र का समर्थन करने या टाइम ज़ोन के बिना स्ट्रिंग्स का उपयोग करने की आवश्यकता है, तो आपको डेट टाइम स्ट्रिंग्स का उपयोग नहीं करना चाहिए । इसके बजाय, 1 जनवरी 1970 से कई मिलीसेकंड पास करें , UTC या दो या अधिक तर्क Date निर्माणकर्ता को अलग-अलग दिनांक भागों का प्रतिनिधित्व करते हैं

मिसिंग टाइम ज़ोन ऑफ़सेट

ES5.1 incorrectly बताता है कि एक अनुपस्थित समय क्षेत्र ऑफ़सेट का मान “Z” जो आईएसओ 8601 के साथ विरोधाभास करता है। यह गलती ES6 (ES2015) में तय की गई थी और ES2016 में विस्तारित ES2016 (देखें "नीचे ECMAScript विनिर्देशों में परिवर्तन")। ES2016 के अनुसार, समय क्षेत्र के बिना तिथि समय तार स्थानीय समय के रूप में पार्स किए जाते हैं जबकि तिथि केवल तार UTC द्वारा पार्स किए जाते हैं।

इस उत्तर के अनुसार, कुछ कार्यान्वयन ने ES5.1 में निर्दिष्ट व्यवहार को कभी लागू नहीं किया। उनमें से एक मोज़िला फ़ायरफ़ॉक्स लगता है। अन्य ब्राउज़र जो ES2016 (और उच्चतर) के विनिर्देश के अनुरूप प्रतीत होते हैं, वे हैं Google Chrome 65+, Microsoft इंटरनेट एक्सप्लोरर 11 और Microsoft एज। Apple Safari का वर्तमान संस्करण (11.1.2) अनुपालन नहीं है क्योंकि यह स्थानीय समय के बजाय UTC के रूप में समय क्षेत्र (जैसे 2018-01-01T00:00 ) के बिना तिथि के तार को गलत तरीके से पार्स करता है।

विरासत की तारीख का समय प्रारूप

ES5 ने 2009 में डेट टाइम स्ट्रिंग्स के लिए एक विनिर्देश पेश किया। इससे पहले, कोई निर्दिष्ट प्रारूप नहीं थे जो सभी ब्राउज़रों द्वारा समर्थित थे। नतीजतन, प्रत्येक ब्राउज़र विक्रेता ने विभिन्न स्वरूपों के लिए समर्थन जोड़ा, जो अक्सर विभिन्न ब्राउज़रों (और संस्करणों) के पार काम नहीं करता था। प्राचीन इतिहास के एक छोटे से उदाहरण के लिए, date-formats देखें।

अधिकांश ब्राउज़र अभी भी उन विरासत स्वरूपों का समर्थन करते हैं जो पुरानी वेबसाइटों की पिछड़ी संगतता को नहीं तोड़ते हैं। लेकिन उन गैर-मानक प्रारूपों पर भरोसा करना सुरक्षित नहीं है क्योंकि वे असंगत हो सकते हैं या किसी भी समय हटाए जा सकते हैं।

Date.prototype.toString() और Date.prototype.toUTCString()

ES2018 ने पहली बार तारीख स्वरूप निर्दिष्ट किया है जो Date.prototype.toString Date.prototype.toString() और Date.prototype.toUTCString() द्वारा लौटाया गया है। इससे पहले ही, ECMA विनिर्देश Date निर्माणकर्ता और Date.parse को उन विधियों द्वारा लौटाए गए स्वरूपों को सही ढंग से पार्स करने के लिए आवश्यक था (भले ही यह 2018 से पहले एक प्रारूप निर्दिष्ट नहीं करता था)।

Date.prototype.toString() का उदाहरण रिटर्न मान इस तरह दिख सकता है:

Sun Feb 03 2019 14:27:49 GMT+0100 (Central European Standard Time)

ध्यान दें कि कोष्ठक के भीतर समय क्षेत्र का नाम वैकल्पिक है और सटीक नाम "कार्यान्वयन-निर्भर" है।

Date.prototype.toUTCString() समान स्वरूप में एक दिनांक देता है, लेकिन एक शून्य टाइमज़ोन ऑफ़सेट के साथ। एक उदाहरण प्रारूप इस तरह दिख सकता है:

Sun, 03 Feb 2019 13:27:49 GMT

ध्यान दें कि Date.prototype.toUTCString() की तुलना में सप्ताह के दिन और महीने के बाद एक अल्पविराम होता है।

जैसा कि उन स्वरूपों को केवल 2018 में निर्दिष्ट किया गया है, आपको अलग-अलग कार्यान्वयन (विशेषकर पुराने ब्राउज़र) में समान रूप से काम करने पर भरोसा नहीं करना चाहिए।

Node.js

Node.js V8 जावास्क्रिप्ट इंजन पर चल रहा है जिसका उपयोग Google Chrome में भी किया जाता है। तो तारीख के समय स्ट्रिंग प्रारूप के बारे में एक ही विनिर्देश लागू होता है। हालांकि कोड बैकएंड में चलता है, लेकिन उपयोगकर्ता स्थानीय समय समय क्षेत्रों को प्रभावित नहीं करता है, लेकिन सर्वर पर केवल सेटिंग्स करते हैं। सेवा (PaaS) प्रदाता के रूप में अधिकांश प्लेटफॉर्म जो Node.js अनुप्रयोगों की मेजबानी करते हैं, UTC को उनके डिफ़ॉल्ट समय क्षेत्र के रूप में उपयोग करते हैं।

दिनांक समय पुस्तकालय

Moment.js

Moment.js जावास्क्रिप्ट में तारीखों से निपटने में मदद करने के लिए एक बहुत ही लोकप्रिय पुस्तकालय है और यह ECMAScript निर्दिष्टियों की तुलना में अधिक स्वरूपों का भी समर्थन करता है । इसके अलावा, Moment.js एक स्ट्रिंग और एक मनमाना प्रारूप के आधार पर दिनांक ऑब्जेक्ट बनाने का भी समर्थन करता है।

Luxon

Luxon ISO 8601, HTTP, RFC2822, SQL और मनमाने फॉर्मेट के parsing का समर्थन करता है। लेकिन केवल अलग-अलग दिनांक समय प्रारूपों के लिए विभिन्न कार्यों का उपयोग करना।

ECMAScript विनिर्देशों में परिवर्तन

दिनांक समय स्ट्रिंग स्वरूपों के संबंध में ECMAScript विनिर्देशों में उल्लेखनीय परिवर्तनों की एक सूची।

ES2018 में परिवर्तन

Date.prototype.toString() और Date.prototype.toUTCString() द्वारा लौटाए गए दिनांक स्वरूपों के लिए एक विनिर्देश प्रस्तुत करता है।

ES2017 में परिवर्तन

कोई उल्लेखनीय परिवर्तन नहीं।

ES2016 में परिवर्तन

यदि समय क्षेत्र अनुपस्थित है, तो दिनांक-समय की व्याख्या स्थानीय समय के रूप में की जाती है।

जब समय क्षेत्र अनुपस्थित है, तो दिनांक-केवल प्रपत्रों को UTC समय के रूप में व्याख्या की जाती है और दिनांक-समय प्रपत्रों की स्थानीय समय के रूप में व्याख्या की जाती है।

ES6 (ES2015) में परिवर्तन

अनुपस्थित समय क्षेत्र ऑफ़सेट का मान “Z”

यदि समय क्षेत्र अनुपस्थित है, तो दिनांक-समय की व्याख्या स्थानीय समय के रूप में की जाती है।

incorrectly :

यदि कोई समय क्षेत्र ऑफ़सेट मौजूद नहीं है, तो स्थानीय समय क्षेत्र का उपयोग किया जाता है। संस्करण 5.1 में गलत तरीके से कहा गया है कि एक लापता समय क्षेत्र की व्याख्या "z" रूप में की जानी चाहिए।

दिनांक समय स्ट्रिंग प्रारूप देखें : ES5 से डिफ़ॉल्ट समय क्षेत्र अंतर उस परिवर्तन के अधिक विवरण के लिए वेब-संगत नहीं है

ES5.1 में परिवर्तन

यदि MM या DD फ़ील्ड अनुपस्थित हैं, तो “01” मान के रूप में उपयोग किया जाता है। यदि HH , mm , या ss फ़ील्ड अनुपस्थित हैं “00” का उपयोग मान के रूप में किया जाता है और अनुपस्थित sss फ़ील्ड का मान “000” । अनुपस्थित समय क्षेत्र ऑफ़सेट का मान “Z”

ES5 में बदलाव

ECMAScript विनिर्देशन में दिनांक समय स्ट्रिंग प्रारूप का पहला परिचय।

ECMAScript आईएसओ 8601 विस्तारित प्रारूप के सरलीकरण के आधार पर तारीख-बार के लिए एक स्ट्रिंग इंटरचेंज प्रारूप को परिभाषित करता है। प्रारूप इस प्रकार है: YYYY-MM-DDTHH:mm:ss.sssZ

इसके अलावा Date.prototype.toISOString() जो उस निर्दिष्ट प्रारूप में दिनांक समय स्ट्रिंग लौटाता है।

ES3 में परिवर्तन

यह Date.parse(x.toUTCString()) कि इन विधियों द्वारा लौटाया गया प्रारूप सही रूप से Date.parse के निहितार्थ के साथ Date.parse(x.toUTCString()) करने योग्य है, इसका उल्लेख करते हुए Date.parse(x.toUTCString()) Date.prototype.toGMTString() और Date.parse(x.toUTCString()) साथ बदल देता है। ध्यान दें कि Date.parse(x.toUTCString()) द्वारा लौटाया गया प्रारूप "कार्यान्वयन-निर्भर" है।

ES2 में परिवर्तन

कोई उल्लेखनीय परिवर्तन नहीं।

प्रारंभिक विशिष्टता: ES1

ES1 ने new Date(value) और Date.parse(value) में उपयोग की जाने वाली तारीख के समय की शुरुआत की। हालाँकि, यह एक वास्तविक दिनांक (समय) प्रारूप को निर्दिष्ट नहीं करता था, यह भी बताता है कि

[...] Date.parse द्वारा उत्पादित मूल्य कार्यान्वयन पर निर्भर है [...]

विनिर्देश में यह भी उल्लेख है कि

यदि x कोई दिनांक ऑब्जेक्ट [...] है, तो निम्नलिखित सभी अभिव्यक्तियों को उस कार्यान्वयन में समान संख्यात्मक मान का उत्पादन करना चाहिए: [...]

  • [...]
  • Date.parse(x.toString())
  • Date.parse(x.toGMTString())

हालाँकि, Date.prototype.toString() और Date.prototype.toGMTString() दोनों के लौटाए गए मान "कार्यान्वयन निर्भर" के रूप में निर्दिष्ट किए गए थे।






time