2014-12-19 22 views
21

DateTimeFormmater का महीना और महीने के एकल अंक दिवस के लिए DateTimeFormatter समर्थन महीने के एकल अंक दिन को संभालने के लिए प्रतीत नहीं होता:वर्ष

String format = "MM/dd/yyyy"; 
String date = "5/3/1969"; 
System.out.println(new SimpleDateFormat(format).parse(date)); 
System.out.println(LocalDate.parse(date, DateTimeFormatter.ofPattern(format))); 

इस उदाहरण में, SimpleDateFormat तारीख सही पार्स करता है, लेकिन DateTimeFormatter एक फेंकता अपवाद। अगर मैं शून्य गद्देदार तिथियों का उपयोग करना चाहता था, उदाहरण के लिए, "05/03/1969", दोनों काम। हालांकि, अगर महीने का महीना या वर्ष का महीना एकल अंक है, तो DateTimeFormatter अपवाद फेंकता है।

सही DateTimeFormatter प्रारूप क्या है जो महीने के एक और दो अंकों के दिन और महीने के महीने को पार्स करने के लिए सही है?

+0

क्या आपने इस मुद्दे का समाधान किया है? मैं 1 या 2 अंक महीने, या 2 या 4 अंकों के वर्ष को पार्स करने के लिए जावा 8 समाधान भी देख रहा हूं। – user607455

उत्तर

35
the documentation से

:

संख्या: यदि पत्रों की गिनती से एक है, तो मूल्य अंकों की और गद्दी के बिना न्यूनतम संख्या का उपयोग कर उत्पादन होता है।

तो प्रारूप प्रारूप जो आप चाहते हैं वह M/d/yyyy है, एकल अक्षर रूपों का उपयोग कर। बेशक, यह अभी भी String की तरह "12/30/1969" की तरह इस दिन/महीने मूल्यों के लिए सही ढंग से पार्स करेगा, दो अंक "अंकों की न्यूनतम संख्या" हैं।

महत्वपूर्ण अंतर यह है कि MM और dd शून्य गद्दी की आवश्यकता होती है, न कि M और d से अधिक 9 (कि एक सा ... असामान्य होगा) मान नहीं संभाल सकता है।

संबंधित मुद्दे