आपकी दिनांक स्ट्रिंग new Date
के साथ काम करने के लिए निर्दिष्ट प्रारूप में नहीं है। Spec में एकमात्र प्रारूप a simplified version of ISO-8601 है, लेकिन यह केवल ES5 में जोड़ा गया था और इसलिए समर्थन स्पर्श और जा सकता है। आपकी स्ट्रिंग उस प्रारूप में नहीं है, लेकिन यह वास्तव में करीब है।
आप एक T
करने के लिए स्पेस बदलते हैं तो आप कल्पना करते रहेंगे:
var dateString = "2015-12-31 00:00:00";
var d = new Date(dateString.replace(' ', 'T'));
(मैं आप वास्तव में एक स्ट्रिंग replace
कॉल उपयोग नहीं कर रहे शाब्दिक, इसलिए यह सोचते हैं रहा हूँ।)
ध्यान दें कि ES5 विनिर्देश में त्रुटि हुई थी जिसे ES2015 (ES6) में ठीक किया गया था: स्ट्रिंग पर कोई टाइमज़ोन सूचक नहीं होने पर क्या होता है। आईएसओ -8601 में, कोई संकेतक का मतलब "स्थानीय समय" नहीं है, लेकिन ईएस 5 विनिर्देश ने कहा कि यह Z
(जीएमटी) पर डिफ़ॉल्ट है। उन्होंने इसे ES2015 विनिर्देशन में तय किया, लेकिन दुर्भाग्यवश कुछ जावास्क्रिप्ट इंजन ES5 विनिर्देशों का पालन करते थे और अन्य ने आईएसओ -8601 (और अब ES2015) का पालन किया, इसलिए ठोस क्रॉस-ब्राउज़र समर्थन के लिए, आपको टाइमज़ोन सूचक शामिल करना होगा क्योंकि अन्यथा आप नहीं पता है कि इसका जीएमटी या स्थानीय समय के रूप में व्याख्या किया जाएगा। आपको जीएमटी या +/-
के लिए Z
का उपयोग ऑफसेट करने के लिए HH:MM
के बाद Z
का उपयोग करने की अनुमति है। (CST
जैसे संक्षेपों की अनुमति नहीं है, क्योंकि उनके लिए कोई मानक नहीं है।)
यदि वे अभी तक इसका समर्थन नहीं करते हैं, भले ही यह अनियंत्रित है, तो YYYY/MM/DD HH:MM:SS
के लिए सार्वभौमिक समर्थन है। तो:
var dateString = "2015-12-31 00:00:00";
var d = new Date(dateString.replace(/-/g, '/'));
स्रोत
2012-11-13 15:41:25
चीयर्स तुम्हें वापस मिल जाएगा, टी चाल कर रही है ! –
@ फिलिप सिगफ्राइड: बढ़िया, खुशी हुई जिसने मदद की! –
@NULL: मैंने कभी ऐसा जावास्क्रिप्ट इंजन नहीं देखा है जिसने इसका समर्थन नहीं किया है।आईई 6 और ऊपर, फ़ायरफ़ॉक्स के हर संस्करण मैंने कभी देखा है, क्रोम के हर संस्करण, ओपेरा के हर संस्करण। ** लेकिन **, किसी को हमेशा लक्षित वातावरण पर परीक्षण करना चाहिए (चाहे कुछ "मानक" है या नहीं, दुख की बात है)। –