शुक्र, 03 नवंबर 2017 09:12:46 यह मेरा दिनांक प्रारूप है और मैं जावा में SimpleDateFormat () का उपयोग करके इसे पार्स करना चाहता हूं

-5
AlgoMan 28 नवम्बर 2017, 13:58

3 जवाब

सबसे बढ़िया उत्तर

ये कोशिश करें:

    DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
    Date date = df.parse("Fri, 03 Nov 2017 09:12:46");
    System.out.println(date);
1
мυѕτавєւмo 28 नवम्बर 2017, 14:42

मेरे पास एक बार एक ऐसी सुविधा लिखने का काम था, जो पहले से प्रारूप को जाने बिना दिनांक स्ट्रिंग को दिनांक तक पार्स करने में सक्षम होगी। दूसरे शब्दों में, एक स्ट्रिंग को दिनांक के रूप में पहचाना जाना चाहिए यदि यह एक वैध तिथि है और जिस प्रारूप में यह आता है, उसकी परवाह किए बिना आज तक पार्स किया गया है। तो मैं जिस समाधान के साथ आया था, वह एक कॉन्फ़िगरेशन फ़ाइल थी जिसमें सभी दिनांक प्रारूप हैं जिनका मैं समर्थन करता हूं। मैंने उन्हें एक-एक करके पढ़ा और उस प्रारूप के साथ स्ट्रिंग को पार्स करने का प्रयास किया। अगर यह काम करता है तो बढ़िया, मैं रुक जाता हूं क्योंकि मुझे मेरा परिणाम मिल गया है अगर नहीं तो मैं अंत तक जारी रखता हूं। यदि सभी प्रारूप विफल हो जाते हैं तो स्ट्रिंग या तो दिनांक नहीं है या असमर्थित प्रारूप में है। बेशक समर्थित स्वरूपों को जोड़ने (और हटाने) के लिए कोड संशोधन की आवश्यकता नहीं है क्योंकि यह मेरी कॉन्फ़िगरेशन फ़ाइल है। इसके अलावा प्रारूपों का क्रम महत्वपूर्ण है क्योंकि जिस तरह से मैं मौसम को नियंत्रित कर सकता हूं, मैं यूरोपीय शैली या इसके विपरीत अमेरिकी प्रारूपों को पसंद करता हूं। मैंने एक लेख लिखा था जो इस विचार का अधिक विस्तार से वर्णन करता है। यह लिंक है: Java 8 java.time पैकेज: किसी भी स्ट्रिंग को आज तक पार्स करना। शीर्षक कहता है कि यह जावा 8 के लिए है, लेकिन सामान्य विचार पुराने संस्करणों पर भी लागू होता है।

0
Michael Gantman 28 नवम्बर 2017, 15:48

टीएल; डॉ

LocalDateTime.parse( 
    "Fri, 03 Nov 2017 09:12:46" , 
    DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US ) 
)

Java.time

आधुनिक दृष्टिकोण java.time क्लासेस का उपयोग करता है जो जावा के शुरुआती संस्करणों के साथ बंडल की गई परेशानी वाली पुरानी डेट-टाइम क्लासेस को प्रतिस्थापित करता है। SimpleDateFormat आदि से बचें।

आपके इनपुट में ऑफ़सेट-से-UTC या समय क्षेत्र का कोई संकेतक नहीं है। इसलिए हम एक LocalDateTime के रूप में पार्स करते हैं।

DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US ) ;
LocalDateTime ldt = LocalDateTime.parse( "Fri, 03 Nov 2017 09:12:46" , f ) ;
0
Basil Bourque 29 नवम्बर 2017, 20:04