2013-02-04 9 views
11

मेरे पास यह दिनांक एक एपीआई से एक स्ट्रिंग के रूप में पार्स किया गया है: डीडी-एमएम-वाई वाई वाई वाई लेकिन कभी-कभी तारीख डीडी-एम-वाई वाई वाई या यहां तक ​​कि डी-एम-वाई वाई वाई है।जेएस तिथि: प्रत्येक दिन या महीने के सामने 0 जोड़ें

उदाहरण के लिए:

4-1-2013 या 10-10-2013 या 7-4-2013

साल हमेशा 4 अंक, लेकिन कुछ दिनों या है महीनों को कभी-कभी एक अंक मिलता है। मैं मैन्युअल रूप से (जेएस के साथ) प्रत्येक अंक के सामने 0 जोड़ सकता हूं?

मैं कुछ गणना के लिए moment.js उपयोग कर रहा हूँ इस प्रकार मैं कर रहा हूँ को दूर '-' (। जैसे 4-1-2013 = 412013)

date.replace("-", "") 

का उपयोग कर एक पूर्ण संख्या प्राप्त करने के लिए तो मैं उपयोग कर सकते हैं यह moment.js के साथ है, लेकिन अगर यह एक अंक है, तो यह सब गड़बड़ हो जाता है।

+1

क्या आप * कैसे * यह "गड़बड़ हो रहा है" पर विस्तार कर सकते हैं? Moment.js API इन प्रारूपों का समर्थन करता है। यदि आप इसे देते हैं: 'पल (' 4-1-2013 ',' डी-एम-वाई वाई वाई ')' यह 4 जनवरी, 2013 के रूप में व्याख्या करेगा। – founddrama

उत्तर

18

आप अपने स्ट्रिंग को पहले इस तरह सामान्य कर सकते हैं:

date = date.replace(/\b(\d{1})\b/g, '0$1'); 

जो कोई भी "शब्द" लेगा जो केवल एक अंक है और शून्य को प्रीपेड करता है।

ध्यान दें कि की जगह हर - आप .replace की regexp संस्करण का उपयोग करना चाहिए लिए विश्व स्तर पर - आप केवल उपयोग किया है स्ट्रिंग संस्करण पहली घटना की जगह, इसलिए:

date = date.replace(/\b(\d{1})\b/g, '0$1').replace(/-/g, ''); 

सब कुछ आप की आवश्यकता कर सकते हैं।

0
var day = new Date(); 
day = day.getDay(); 
if(day.toString().length <= 1) { 
    day = '0' + day; 
} 

आप इसे महीने के लिए उपयोग कर सकते हैं। मुझे पूरी तरह से यकीन नहीं है कि आपको स्ट्रिंग में कनवर्ट करने की आवश्यकता है लेकिन इससे कोई चोट नहीं आएगी।

+1

यह काम करेगा क्योंकि मुझे मिलने वाली तिथियां तार हैं। आप दिन को परिभाषित नहीं कर सकते हैं .getDay()। कल्पना करें 7-4-2013 एक शब्द है। – ClydeM

2

यदि दिनांक चर स्ट्रिंग प्रारूप में है (उदाहरण के लिए input[type=date] से) तो आपको डेटा घटक को एकल आइटम में विभाजित करने की आवश्यकता है।

date = date.split('-'); 

तो जाँच दोनों दिन का और महीने की लंबाई

day = date[0].length==1 ? "0"+date[0] : date[0]; 
month = date[1].length==1 ? "0"+date[1] : date[1]; 

फिर एक प्रारूप है कि आप की इच्छा में वापस एक साथ उन्हें प्राप्त

date = ""+day+month+date[2]; 

कार्य उदाहरण: http://jsfiddle.net/dzXPE/

6

Moment.js डैश के साथ स्वरूपों का समर्थन करता है, इसलिए आपको स्ट्रिंग हैंडलिंग करने की भी आवश्यकता नहीं है।

moment('4-1-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 04012013 
moment('10-10-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 10102013 
संबंधित मुद्दे