2010-12-01 14 views
15

यह मेरा कोड है:के बारे में जावास्क्रिप्ट नई तिथि() और Date.parse()

var exampleDate='23-12-2010 23:12:00'; 
    var date=new Date(exampleDate);//returns invalid Date 
    var date1=Date.parse(exampleDate);//returns NAN 

मैं तारीख में ऊपर स्ट्रिंग परिवर्तित करना चाहते हैं। इसलिए मैंने ऊपर एक कोड लिखा है जैसा आपने ऊपर देखा है।

इस कोड IE और Opera में ठीक चल रहा है, लेकिन date चर मुझे गलत तिथि लौटा रहा है और date1mozilla Firefox में NAN लौटा रहा है, मुझे क्या करना चाहिए?

उत्तर

6

उपरोक्त प्रारूप केवल आईई और क्रोम में समर्थित है।

तो अन्य प्रारूपों के साथ प्रयास करें। निम्नलिखित कुछ प्रारूप हैं और ब्राउज़र का समर्थन कर रहे हैं।

<script type="text/javascript"> 

//var dateString = "03/20/2008"; // mm/dd/yyyy [IE, FF] 

var dateString = "2008/03/20"; // yyyy/mm/dd [IE, FF] 
// var dateString = "03-20-2008"; // mm-dd-yyyy [IE, Chrome] 
// var dateString = "March 20, 2008"; // mmmm dd, yyyy [IE, FF] 
// var dateString = "Mar 20, 2008"; // mmm dd, yyyy [IE, FF] 

// Initalize the Date object by passing the date string variable 
var myDate = new Date(dateString); 
alert(myDate); 
</script> 
+0

yyyy/MM/dd क्रोम में भी काम करता है ... समाधान के लिए धन्यवाद !!! – OverMars

+2

यह स्वीकार्य उत्तर नहीं होना चाहिए, कैसाब्लांका जवाब देखें – Toskan

2

जावास्क्रिप्ट निम्नलिखित dateStrings से कम से कम रूपांतरण का समर्थन करना चाहिए:

* yyyy/MM/dd 
* MM/dd/yyyy 
* MMMM dd, yyyy 
* MMM dd, yyyy 

साथ प्रयास करें:

var exampleDate='12/23/2010 23:12:00'; 
    var date = new Date(exampleDate); 
25

अपने उदाहरण में स्ट्रिंग मानक प्रारूप ब्राउज़र द्वारा पहचाना से किसी में नहीं है।

इस प्रारूप के अनुसार किया जाता है के रूप में:

YYYY

YYYY-MM: YYYY-MM-DDTHH:mm:ss.sssZ

यह स्वरूप तारीख-केवल रूपों में शामिल हैं ECMAScript विनिर्देश ब्राउज़रों केवल एक मानक प्रारूप पार्स करने के लिए सक्षम होने के लिए की आवश्यकता है

YYYY-MM-DD

यह भी एक वैकल्पिक समय क्षेत्र के साथ ही समय रूपों संलग्न ऑफसेट में शामिल हैं:

THH:mm

THH:mm:ss

THH:mm:ss.sss

भी शामिल "तिथि-समय" जो के किसी भी संयोजन हो सकता है उपरोक्त।

यदि स्ट्रिंग उस प्रारूप के अनुरूप नहीं है तो फ़ंक्शन किसी भी कार्यान्वयन-विशिष्ट हेरिस्टिक या कार्यान्वयन-विशिष्ट दिनांक स्वरूपों पर वापस आ सकता है। अपरिचित स्ट्रिंग्स या तिथियां प्रारूप स्ट्रिंग में अवैध तत्व मान वाले दिनांक को दिनांक .parse को NaN वापस करने का कारण बन जाएगा।

तो आपके उदाहरण में, 2010-12-23T23:12:00 का उपयोग करने के लिए एकमात्र स्ट्रिंग काम करने की गारंटी है। व्यावहारिक रूप से, अधिकांश ब्राउज़रों प्रारूप DD Month YYYY या Month DD, YYYY की तिथियों की अनुमति भी देते हैं, इसलिए 23 Dec 2010 और Dec 23, 2010 जैसे तार भी काम कर सकते हैं।

+0

धन्यवाद यह मेरी मदद समय इस जवाब लिखा गया मेरी समस्या – Chitresh

+0

reslove है, तारीख तार के पार्स कार्यान्वयन निर्भर था, इसलिए वहाँ थे ** कोई ** तार जो "काम करने की गारंटी" हैं। तब से, आईएस 86 (लंबी क्रोम और सफारी) के साथ संगत ब्राउज़रों द्वारा ईएसटी (जैसे फ़ायरफ़ॉक्स) और स्थानीय के साथ संगत ब्राउज़र द्वारा यूटीसी के रूप में आईएसओ 8601 लंबे प्रारूप तारों को यूटीसी के रूप में पार्स किया जाना आवश्यक था। वर्तमान उपयोग (2015) में ब्राउज़रों में सभी 3 व्यवहार देखे जा सकते हैं जैसे आईई 8 रिटर्निंग एनएन, फ़ायरफ़ॉक्स 40 इसे यूटीसी और क्रोम 44 के रूप में स्थानीय रूप में मानता है। तो अभी भी ** कोई ** तार नहीं हैं जो "काम करने की गारंटी" हैं। – RobG

4

आप एक नियमित अभिव्यक्ति के साथ मैन्युअल रूप से इसे पार्स तो तारीख तत्वों के साथ तारीख निर्माता कह सकते हैं, जैसे:

var parseDate = function(s) { 
    var re = /^(\d\d)-(\d\d)-(\d{4}) (\d\d):(\d\d):(\d\d)$/; 
    var m = re.exec(s); 
    return m ? new Date(m[3], m[2]-1, m[1], m[4], m[5], m[6]) : null; 
}; 
var dateStr = '23-12-2010 23:12:00'; 
parseDate(dateStr).toString(); //=> Thu Dec 23 2010 23:12:00 GMT-0800 
1

उपयोग datejs और इस कोड:

var exampleDate='23-12-2010 23:12:00'; 
var myDate = Date.parseExact(exampleDate, 'dd-MM-yyyy hh:mm:ss'); 

myDate एक सही ढंग से निर्मित Date ऑब्जेक्ट होना चाहिए।

0

बस इस प्रारूप में उपयोग करें:

var exampleDate='2010-12-23 23:12:00'; 
संबंधित मुद्दे