LocalDate date4 = ZonedDateTime
.parse(date, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH))
.toLocalDate();
java.sql.Date date5 = java.sql.Date.valueOf(date4);
मैं java.time
. में आधुनिक कक्षाओं का उपयोग कर रहा हूं पैकेट। आपने देखा कि कोड न केवल सरल है, एक बार जब आप नई कक्षाओं की धाराप्रवाह लेखन शैली से परिचित हो जाते हैं, तो यह भी स्पष्ट हो जाता है।
यदि आप 100% आधुनिक बनना चाहते हैं, तो आपको यह भी देखना चाहिए कि क्या आपका नवीनतम MySQL JDBC ड्राइवर LocalDate
स्वीकार नहीं करेगा। सीधे java.sql.Date
में रूपांतरण के बिना . यह चाहिए।
ध्यान देने योग्य कुछ विवरण
- यदि आपको अपने नियंत्रण से बाहर के कंप्यूटरों पर चलाने के लिए अपने कोड की आवश्यकता है, तो हमेशा अपने फॉर्मेटर को लोकेल दें, या आपके दिनांक स्ट्रिंग को गैर-अंग्रेज़ी-भाषी लोकेल वाले कंप्यूटर पर पार्स नहीं किया जा सकता है। आप
Locale.ROOT
. का उपयोग कर सकते हैं स्थानीय तटस्थ लोकेल के लिए (यह अंग्रेजी बोलता है)। - यदि आप कर सकते हैं, तो तीन अक्षर वाले समय क्षेत्र संक्षिप्ताक्षरों से बचें। कई अस्पष्ट हैं। EET वास्तव में केवल आधा समय क्षेत्र है क्योंकि कुछ स्थानों पर इसका उपयोग EEST (ग्रीष्मकालीन समय) पर किया जाता है।
Europe/Bucharest
. जैसे लंबे समय क्षेत्र आईडी का उपयोग करना बेहतर है या यूटीसी से एक ऑफसेट जैसे+02:00
।
यदि आप DateTimeFormatter
. का उपयोग करते हैं तो ये बिंदु मान्य नहीं हैं या SimpleDateFormat
।
यदि आप अनुशंसित नई कक्षाओं में आगे नहीं बढ़ना चाहते हैं या नहीं करना चाहते हैं, तो आपके कोड में सुधार है:
SimpleDateFormat formatnow
= new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
SimpleDateFormat formatneeded = new SimpleDateFormat("yyyy-MM-dd");
मैं लोअरकेस zzz
का उपयोग कर रहा हूं चूंकि यह तीन-अक्षर वाले समय क्षेत्र के नाम से मेल खाने के लिए प्रलेखित है, मुझे पता है कि अपरकेस ZZZ
भी काम करता है। मैंने लोकेल जोड़ा है। और शायद सबसे महत्वपूर्ण, आवश्यक प्रारूप में मैंने YYYY
. को बदल दिया है (सप्ताह-आधारित वर्ष) से yyyy
. तक (कैलेंडर वर्ष) और DD
(वर्ष का दिन) से dd
. तक (महीने का दिन)। वे सभी पत्र दस्तावेज़ीकरण
में हैं ।