मैं का उपयोग "yyyyMMdd"
के स्ट्रिंग को पार्स करने के लिए कर रहा हूं।SimpleDateFormat.parse() को अमान्य तिथियों पर विफल करें (उदा। माह 12 से अधिक है)
यदि मैं असफल होने की बजाय 12 से अधिक महीने के साथ एक स्ट्रिंग को पार्स करने का प्रयास करता हूं, तो यह अगले वर्ष तक चलता है। पूर्ण runnable रेप्रो:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParseDateTest {
public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date result = format.parse("20091504"); // <- should not be a valid date!
System.out.println(result); // prints Thu Mar 04 00:00:00 CST 2010
}
}
मैं नहीं बल्कि एक ParseException
फेंक दिया होगा।
क्या अपवाद को मजबूर करने का कोई गैर-हैकी तरीका है? मेरा मतलब है, मैं मैन्युअल रूप से जांचना नहीं चाहता कि महीने 12 से अधिक है या नहीं। यह हास्यास्पद है।
किसी भी सुझाव के लिए धन्यवाद।
नोट: मुझे पहले से ही जोडा समय के बारे में पता है, लेकिन मुझे बाहरी पुस्तकालयों के बिना सादे जेडीके में यह करने की ज़रूरत है।
धन्यवाद एक बहुत होगा। वह चाल है। आश्चर्यजनक है कि यहां प्रश्न पूछने से Google पर खोज करने से परिणाम तेज होता है (या मैं खोज में चूसता हूं :)। एक लाइनर के लिए –
+1। –
स्टैक ओवरफ्लो उपयोगकर्ताओं को 1 से अधिक बिंदुओं के उत्तर देने की अनुमति दे सकता है और यह उन उत्तरों में से एक है। मैं 'SimpleDateFormat' के साथ पार्स करने से पहले कुछ हास्यास्पद पैटर्न मिलान कर रहा था। बहुत बहुत धन्यवाद। –