मैं प्रारूप "yyyymmdd" प्रारूप के साथ एक साधारणडेटफॉर्मैट का उपयोग करके तारीखों को मान्य और पार्स करना चाहता हूं। यह 100624 को भी अनुमति देता है, जिसे वर्ष 10 (जूलियस सीसार की मृत्यु के 54 वर्ष बाद) के लिए पार्स किया जाता है। तिथियां 1 9 70 की तरह कुछ भी होंगी, इसलिए मैं SimpleDateFornat ("yymmdd") के साथ बसना नहीं चाहता हूं।जावा के सरलीडेटफॉर्मेट में 0 अंकों के लिए मजबूर करना
मुझे आश्चर्य है कि SimpleDateFormat का उपयोग करके चार अंकों का वर्ष प्रारूप लागू करने का कोई तरीका है? मैं एक regexp परीक्षण अपफ्रंट करने के करीब हूं लेकिन शायद (सरल) डेटफॉर्मैट() का उपयोग करने का एक स्मार्ट तरीका है?
कोड के अनुरोध के अनुसार, चीजें अधिक जटिल हो रही हैं और मेरा शोध आधा था। प्रयुक्त प्रारूप yyyy-MM-dd के साथ शुरू करने के लिए था (यह एक चर से आया था, जिसमें गलत javadoc था)। हालांकि जैसा कि yyyyMmdd के नीचे एक उत्तर में दर्शाया गया है, चार साल के अंक को मजबूर करता है। तो मेरा सवाल बदल गया है कि "yyyy-MM-dd" प्रारूप के लिए चार अंकों के वर्ष को कैसे बल दिया जाए। और "yyyyMmdd" अलग क्यों व्यवहार करता है? के लिए और उसके बाद जाँच लें कि साल अधिक से अधिक है कुछ निर्दिष्ट तिथि (:
public void testMaturity() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
System.out.println(" " + sdf.format(sdf.parse("40-12-14")));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
sdf.setLenient(false);
System.out.println(" " + sdf2.format(sdf2.parse("401214")));
fail();
} catch (ParseException pe) {
assertTrue(true);
}
कौन सा प्रिंट 0040-12-14
तारीख yyyymmdd की आवश्यकता है तो साल 10 0010 होगा।मुझे इसके साथ कोई समस्या नहीं दिखाई देती है, आप उन्हें पहले दिन (01) या पहले महीने के लिए 1 दर्ज नहीं करने देते हैं, तो इसे वर्षों तक क्यों अनुमति दें। – Goibniu