2010-03-19 14 views
13

वर्तमान में आप ISO8601 तिथियों को कैसे पार्स कर रहे हैं उदा। 2010-02-23T23: 04: 48Z जावास्क्रिप्ट में?क्या जावास्क्रिप्ट/EcmaScript3 ISO8601 दिनांक पार्सिंग का समर्थन करता है?

कुछ ब्राउज़र नीचे दिए गए कोड का उपयोग करते समय NaN (क्रोम सहित) लौटाते हैं, हालांकि FF3.6 + काम करता है।

<html> 
<body> 
    <script type="text/javascript"> 
    var d = Date.parse("2010-02-23T23:04:48Z"); 
    document.write(d); 
</script> 
</body> 
</html> 

आप इस यहाँ http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parse

उत्तर

2

: नहीं मूल रूप से (के रूप में आप परीक्षण किया है :))

ECMA- में 262 (3/ई) Date.parse[15.9.4.2] के लिए एकमात्र आवश्यकता .toString() और .toUTCString() के माध्यम से राउंड-ट्रिप रूपांतरण दिनांक वस्तु, यानी नहीं बदलेगा

Date.parse(x.toString()) == Date.parse(x.toUTCString()) == x 

और दोनों .toString()[15.9.5.2] और .toUTCString()[15.9.5.42] कार्यान्वयन पर निर्भर कर रहे हैं, तो क्या प्रारूप Date.parse पार्स कर सकते हैं पूरी तरह से अनिर्दिष्ट है।

3

जैसा कि अन्य ने उल्लेख किया है, यह तीसरे संस्करण विनिर्देश में नहीं है। यह 5 वां संस्करण विनिर्देशन में है, और मैं उद्धरण देता हूं:

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

तो यह ब्राउज़रों में जल्द ही मिलने वाले किया जाना चाहिए (IE9, क्रोम 1, फ़ायरफ़ॉक्स 4 आईएसओ समर्थन ब्राउज़रों के कम से कम कुछ कर रहे हैं 8601 तिथियां)। यदि आप इस दौरान एक समाधान लागू करना चाहते हैं, तो आप ऐसा अनुकूलन करने के लिए अपनी स्क्रिप्ट अगर देशी उपलब्ध का लाभ ले सकते है कि चाह सकते हैं:

(function() 
{ 
    if (isNaN(Date.parse("2010-02-23T23:04:48Z"))) 
    { 
     var oldParse = Date.parse; 
     Date.parse = function (strTime) 
     { 
      // regex test strTime for ISO 8601, use oldParse if it isn't 
      // Use custom parser if it is. 
     } 
    } 
})(); 
9

यह एक उत्कृष्ट कार्यान्वयन जो बढ़त मामलों को शामिल किया गया और देशी के लिए वापस गिर जाता है कार्यान्वयन। https://github.com/csnover/js-iso8601/

संबंधित मुद्दे