2015 अपडेट
यह एक पुराना प्रश्न है लेकिन अन्य नए प्रश्न जैसे:
इस एक के डुप्लिकेट के रूप में बंद हो जाओ, तो मुझे लगता है कि यहाँ कुछ ताज़ा जानकारी जोड़ना महत्वपूर्ण है। मैं इसे लिख रहा हूं क्योंकि मैं यह सोचकर डर गया था कि लोग वास्तव में यहां पोस्ट किए गए कुछ कोड को कॉपी और पेस्ट करते हैं और इसे उत्पादन में उपयोग करते हैं।
यहां अधिकांश उत्तर या तो कुछ जटिल नियमित अभिव्यक्तियों का उपयोग करते हैं जो केवल कुछ बहुत विशिष्ट स्वरूपों से मेल खाते हैं और वास्तव में इसे गलत तरीके से करते हैं (जैसे कि मिलान को वास्तविक आईएसओ तिथि से मेल नहीं खाते जबकि 32 जनवरी को मिलान करते हैं - डेमो देखें ) या वे Date
कंस्ट्रक्टर और कुछ भी पास करने की कोशिश करते हैं शुभकामनाएँ।
पल का उपयोग करना
जैसा कि मैंने इस उत्तर में बताया कि वर्तमान में इसके लिए एक पुस्तकालय उपलब्ध है:
क्षण। जेएस
यह जावास्क्रिप्ट में पार्स करने, मान्य करने, हेरफेर करने और प्रदर्शन करने के लिए एक पुस्तकालय है, जिसमें मानक जावास्क्रिप्ट तारीख हैंडलिंग कार्यों की तुलना में बहुत समृद्ध एपीआई है।
यह 12kB छोटा / gzipped और Node.js और अन्य स्थानों पर काम करता है:
bower install moment --save # bower
npm install moment --save # npm
Install-Package Moment.js # NuGet
spm install moment --save # spm
meteor add momentjs:moment # meteor
मोमेंट का उपयोग करके आप मान्य तिथियों की जाँच के बारे में बहुत विशिष्ट हो सकते हैं। कभी-कभी आपके द्वारा अपेक्षित प्रारूप के बारे में कुछ सुराग जोड़ना बहुत महत्वपूर्ण है। उदाहरण के लिए, एक दिनांक जैसे 06/22/2015 एक वैध तिथि जैसा दिखता है, जब तक कि आप प्रारूप / MM / YYYY प्रारूप का उपयोग नहीं करते हैं, इस स्थिति में इस तिथि को अमान्य माना जाना चाहिए। ऐसे कुछ तरीके हैं जिनसे आप यह बता सकते हैं कि आप किस प्रारूप की उम्मीद करते हैं, उदाहरण के लिए:
moment("06/22/2015", "MM/DD/YYYY", true).isValid(); // true
moment("06/22/2015", "DD/MM/YYYY", true).isValid(); // false
true
तर्क वहाँ बहुत पल इनपुट पार्स करने के लिए अगर यह नहीं है की कोशिश नहीं होगा वास्तव में प्रदान की स्वरूपों में से एक के अनुरूप (यह मेरी राय में एक डिफ़ॉल्ट व्यवहार होना चाहिए)।
आप आंतरिक रूप से प्रदान किए गए प्रारूप का उपयोग कर सकते हैं:
moment("2015-06-22T13:17:21+0000", moment.ISO_8601, true).isValid(); // true
और आप एक सरणी के रूप में कई प्रारूपों का उपयोग कर सकते हैं:
var formats = [
moment.ISO_8601,
"MM/DD/YYYY :) HH*mm*ss"
];
moment("2015-06-22T13:17:21+0000", formats, true).isValid(); // true
moment("06/22/2015 :) 13*17*21", formats, true).isValid(); // true
moment("06/22/2015 :( 13*17*21", formats, true).isValid(); // false
देखें: डेमो ।
अन्य पुस्तकालय
यदि आप Moment.js का उपयोग नहीं करना चाहते हैं, तो अन्य पुस्तकालय भी हैं:
2016 अपडेट
मैंने उस अपरिपक्व मॉड्यूल का निर्माण किया, जो कि (एक उपसमुच्चय) क्षण जैसा है लेकिन मौजूदा वस्तुओं के उत्परिवर्तन के कारण आश्चर्य के बिना ( अधिक जानकारी के लिए डॉक्स देखें )।
2018 अपडेट
आज मैं मोमेंट के बजाय डेट / टाइम मैनिपुलेशन के लिए लक्सन का उपयोग करने की सलाह देता हूं , जो (मोमेंट के विपरीत) सभी ऑब्जेक्ट को अपरिवर्तनीय बनाता है, इसलिए डेट्स के निहित उत्परिवर्तन से संबंधित कोई आश्चर्यजनक आश्चर्य नहीं है।
और जानकारी
यह सभी देखें:
रोबर्ट ग्रेवल द्वारा लेखों की एक श्रृंखला जावास्क्रिप्ट तिथि पार्सिंग लाइब्रेरी पर:
जमीनी स्तर
बेशक, कोई भी पहिया को सुदृढ़ करने की कोशिश कर सकता है, एक नियमित अभिव्यक्ति लिख सकता है (लेकिन कृपया ऐसा करने से पहले वास्तव में आईएसओ 8601 और आरएफसी 3339 पढ़ें) या त्रुटि संदेश पार्स करने के लिए यादृच्छिक डेटा वाले buit-in constructors को कॉल करें 'Invalid Date'
(क्या आपको यकीन है कि यह संदेश है सभी प्लेटफार्मों पर बिल्कुल समान है? सभी स्थानों में? भविष्य में?) या आप एक परीक्षण किए गए समाधान का उपयोग कर सकते हैं और इसे सुधारने के लिए अपने समय का उपयोग कर सकते हैं, इसे फिर से स्थापित नहीं कर सकते। यहाँ सूचीबद्ध सभी पुस्तकालय खुले स्रोत, मुफ्त सॉफ्टवेयर हैं।