मुझे लगता है कि मुद्दा यह है कि "2012-05-12" स्ट्रिंग को आईएसओ 8601 दिनांक माना जाता है, जबकि "05/12/2012" एक आरएफसी 2822 दिनांक है। आईएसओ प्रारूप में, टाइमज़ोन की कमी यूटीसी का तात्पर्य है। 12 मई को सुबह आधी रात को कैलिफोर्निया (या जहां भी आप हैं) में यह शाम 7 बजे है।
हालांकि, समय क्षेत्र के बिना आरएफसी तिथि इस धारणा के तहत पार्स की गई है कि आप अपने स्थानीय टाइमज़ोन में मध्यरात्रि के लिए टाइमस्टैम्प चाहते हैं। (ठीक है, जरूरी नहीं कि अपने समय क्षेत्र, कंप्यूटर के समय क्षेत्र जहां आपकी जावास्क्रिप्ट चलाता है :-)
आप अंतर देखेंगे अगर आप Date.parse()
करने के लिए उन तार पारित कर सकते हैं।
आरएफसी दिनांक प्रारूप में एक स्पष्ट समय क्षेत्र शामिल हो सकता है, लेकिन आईएसओ प्रारूप नहीं कर सकता है। (ठीक है, यह है, लेकिन ब्राउज़रों ध्यान देना कर सकते हैं नहीं है, और जाहिरा तौर पर आईई उन सब पर संभाल नहीं करता है।)
संपादित — यहाँ एक सरल है (गूंगा, कोई त्रुटि जाँच) समारोह है कि आप दे देंगे कि 3-इस भाग को ISO रूप से एक तिथि:
function isoDate(str) {
var rv = null;
str.replace(/^(\d\d\d\d)-(\d\d)-(\d\d)$/, function(_, yr, mn, dy) {
rv = new Date(parseInt(yr, 10), parseInt(mn, 10) - 1, parseInt(dy, 10));
});
return rv;
}
पहले उदाहरण में अग्रणी शून्य को हटाएं। 'var date = new date (" 2012-5-12 ");' – j08691
@ j08691 जिसके परिणामस्वरूप कम से कम फ़ायरफ़ॉक्स में "अमान्य तिथि" त्रुटि होती है। – Pointy
@ पॉइंटी - अच्छी पकड़, मैंने क्रोम में परीक्षण किया। – j08691