मेरा प्रोग्राम LocalDate
ऑब्जेक्ट में इनपुट स्ट्रिंग को पार्स कर रहा है। ज्यादातर समय स्ट्रिंग 30.03.2014
जैसा दिखता है, लेकिन कभी-कभी यह 3/30/2014
जैसा दिखता है। जिसके आधार पर, मुझे DateTimeFormatter.ofPattern(String pattern)
पर कॉल करने के लिए एक अलग पैटर्न का उपयोग करने की आवश्यकता है। असल में, मुझे यह जांचने की आवश्यकता है कि स्ट्रिंग पार्सिंग करने से पहले पैटर्न dd.MM.yyyy
या M/dd/yyyy
से मेल खाती है या नहीं।टाइम एपीआई का उपयोग कर स्ट्रिंग मैचों की तारीख पैटर्न को जांचने के लिए कैसे करें?
regex दृष्टिकोण होगा कुछ की तरह:
LocalDate date;
if (dateString.matches("^\\d?\\d/\\d{2}/\\d{4}$")) {
date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("M/dd/yyyy"));
} else {
date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd.MM.yyyy"));
}
यह काम करता है, लेकिन यह तारीख पैटर्न स्ट्रिंग जब स्ट्रिंग भी मिलान उपयोग करने के लिए अच्छा होगा।
क्या रीगाक्स मिलान का उपयोग किए बिना नए जावा 8 टाइम एपीआई के साथ ऐसा करने के लिए कोई मानक तरीका है? मैंने DateTimeFormatter
के लिए दस्तावेज़ों में देखा है लेकिन मुझे कुछ भी नहीं मिला।
क्यों आप 'प्रतिस्थापन' (// // ","। ") 'स्ट्रिंग नहीं करते हैं? –
मुझे नहीं लगता कि यह निर्धारित करने के लिए एक विशिष्ट विधि है कि कोई दिनांक किसी दिए गए पैटर्न का पालन करता है या नहीं। मैं SimpleDateFormat.parse विधि का उपयोग करता हूं और ParseException की जांच करता हूं। यदि आप सुनिश्चित हैं कि तिथि सही है और यह दो पैटर्न में से एक में है, तो आप जांच सकते हैं कि '।' स्ट्रिंग में – maxvv
@RobertNiestroj क्योंकि महीने और दिन दोनों पैटर्न में एक ही स्थान पर नहीं हैं। –