2012-10-26 18 views
19

में अमान्य तिथि त्रुटि यहां अपेक्षाकृत सरल जावास्क्रिप्ट, यह सुनिश्चित नहीं है कि आईई मुझसे नफरत क्यों करती है (दूसरों के साथ व्यवहार करें कि आप किस तरह से व्यवहार करना चाहते हैं)।जावास्क्रिप्ट इंटरनेट एक्सप्लोरर

var newDate = new Date("2012, 11, 2 19:30:00:000"); 
alert(newDate); 

यह क्रोम और एफएफ में काम करता है, लेकिन आईई आउटपुट "अवैध तिथि"

फिडल मुझे इस: मोज़िला तारीख संदर्भ में http://jsfiddle.net/k6yD6/

+1

मुझे वास्तव में फ़ायरफ़ॉक्स में भी अमान्य तिथि मिलती है (नवीनतम संस्करण, 16.0.1)। –

+2

बस सुनिश्चित करें कि आप एक उचित प्रारूप का उपयोग कर रहे हैं। इस प्रश्न को कई बार पहले पूछा गया है, http://stackoverflow.com/questions/3020508/ie-javascript-date-parsing-error –

+1

आईई के लिए इसकी तारीख ओबीजे = नई तिथि (वर्ष, महीना, तिथि [, घंटे [, मिनट [, सेकंड [, एमएस]]]]) – Amitd

उत्तर

30

दिनांक निर्माता should be an RFC2822 or ISO 8601 formatted date को दी गई स्ट्रिंग। आपके उदाहरण में यह नहीं है। एक alternate constructor का उपयोग कर

new Date("2012-11-02T19:30:00.000Z"); 

या: निम्नलिखित का प्रयास करें

new Date(2012, 11, 2, 19, 30, 0) 
+0

धन्यवाद, वैकल्पिक कन्स्ट्रक्टर काम करता है हालांकि आपके द्वारा सूचीबद्ध पहला ब्राउज़र किसी भी ब्राउज़र में प्रतीत नहीं होता है – dougmacklin

+0

@DougieBear उत्तर अपडेट किया गया - मुझे –

+0

दिन से पहले एक आवश्यक शून्य याद आया था ("2012-11-02T19 : 30: 00.000Z "); मिलीसेकंड को हटाया जा सकता है, लेकिन यदि शामिल किया जाना चाहिए तो एक बिंदु से पहले, एक कोलन नहीं होना चाहिए। – kennebec

7

आईई संख्यात्मक स्ट्रिंग में मिलीसेकंड और महीनों का समर्थन करने के प्रतीत नहीं होता। इस प्रयास करें:

new Date("November 2, 2012 19:30:00"); 

या

new Date(year, month, day, hours, minutes, seconds, milliseconds) 
+1

'नई तिथि ("2 नवंबर, 2012 1 9:30:00");' - इसने मुझे बहुत दर्द बचाया। – dexterb

1

IE में काम करने के लिए, तारीख उचित प्रारूप में होना चाहिए। मैंने नीचे दिए गए प्रारूप का उपयोग करके इस मुद्दे को ठीक किया:

var tDate = new Date('2011'+"-"+'01'+"-"+'01'); //Year-Month-day 
+0

जब मैंने अपने कोड में इस वर्ष-महीने के प्रारूप को पारित किया, तो यह समस्या ठीक हो गई ... आपको 1 अप देना होगा।हालांकि, मुझे नई तिथि की आवश्यकता नहीं थी, बस एक स्ट्रिंग के रूप में प्रारूप को बदलें और दिनांक आईई 11 के माध्यम से सर्वर पक्ष पर सही ढंग से दिखाई दिया। – Clarence

-1

मुझे इंटरनेट एक्सप्लोरर के साथ एक ही समस्या थी। इस तरह मैं तारीख और शुरू में समय,

function formatDateTime(date, formatString = 'MM/DD/YYYY hh:mm A') { 
    return moment(new Date(date)).format(formatString); 
} 

समस्या new Date() के साथ था स्वरूपण था। मैंने इसे अभी हटा दिया क्योंकि यह पहले से ही UTC दिनांक था। तो यह सिर्फ है,

return moment(date).format(formatString); 

यह आईई सहित सभी ब्राउज़रों में मेरे लिए काम किया।

+0

ओपी पल.जेएस लाइब्रेरी का उपयोग करके उल्लेख नहीं करता है। – user2954463