2015-04-16 5 views
7

मैं वर्तमान सिस्टम दिनांक प्रारूप के बावजूद जावा में डेट स्ट्रिंग को डेट ऑब्जेक्ट में कनवर्ट करने का प्रयास कर रहा हूं। क्योंकि मैं डेटाबेस में स्टोर करने के लिए अपना कस्टम डेट प्रारूप प्राप्त करना चाहता हूं। निम्नलिखित मेरा कोड है और कृपया मुझे सलाह दें।जावा में स्ट्रिंग टू डेट को कनवर्ट करने के लिए जो भी सिस्टम प्रारूप

public static String dateToString(String date){ 
    if(date.equals("")) return ""; 
    if(date == null || date.length() == 0){ 
     return ""; 
    } 
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); 
    try { 
     Date l_date = format.parse(date); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(l_date); 
     String year = String.format("%04d", calendar.get(Calendar.YEAR)); 
     String month = String.format("%02d", calendar.get(Calendar.MONTH)); 
     String day = String.format("%02d", calendar.get(Calendar.DATE)); 
     return year + month + day; 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return ""; 
    } 
} 

SimpleDateFormat के लिए, यह केवल कोडित कोड को पार्स कर सकता है।

dateToString("16/04/2015"); 

यह उपरोक्त कोड के लिए परिवर्तित कर सकते हैं। लेकिन, जब मैं निम्नलिखित प्रारूप

dateToString("Thursday, April 16, 2015"); 

मैं अतुलनीय तिथि पर जाता हूं: "गुरुवार, 16 अप्रैल, 2015" त्रुटि।

+0

उपयोग 'नई SimpleDateFormat (" YYYYMMDD ") लौट प्रारूप (calendar.getTime());।' कैलेंडर में महीने के रूप में 0. से गिना जाता है –

+0

पर भरोसा मत करो अपने डेटाबेस के साथ संवाद के लिए तार। डेट-टाइम मानों के लिए, डेट-टाइम ऑब्जेक्ट्स का उपयोग करें। जेडीबीसी 4.2 और बाद में, जावा-टाइम क्लासेस का उपयोग 'प्रीपेडस्टेटमेंट :: सेटऑब्जेक्ट' और 'परिणामसेट :: getObject' के साथ करें। –

उत्तर

4

आप dd/MM/yyyy के प्रारूप के साथ EEEE, MMMM dd, yyyy प्रारूप में एक स्ट्रिंग परिवर्तित करने के लिए कोशिश कर रहे हैं ...

प्रारंभ के लिए सही प्रारूप का उपयोग करके String आप कन्वर्ट करने के लिए, उपयोग कभी स्वरूप क्या आप परिवर्तित करना चाहते हैं की कोशिश कर रहा इसे वापस ...

SimpleDateFormat from = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
SimpleDateFormat to = new SimpleDateFormat("dd/MM/yyyy"); 

String value = to.format(from.parse(dateString)); 

अब आप DateUtils.parseDate(String, String[]) की तरह कुछ है जो विभिन्न स्वरूपों के एक नंबर की आपूर्ति करने की अनुमति देता है, लेकिन अभी भी तुम क्या जानते हो सकता है के लिए सीमित है इस्तेमाल कर सकते हैं।

बेहतर समाधान डेटाबेस के भीतर Date मान को संग्रहीत करना होगा।

+0

धन्यवाद @ मैडप्रोग्रामर। लेकिन, मैं डेटाबेस मान को सीधे डेटाबेस में संग्रहीत नहीं करना चाहता क्योंकि क्लाइंट कंप्यूटर के पास अलग-अलग दिनांक प्रारूप हो सकते हैं और मैं डेटाबेस में डालने से पहले उन्हें अपने कस्टम प्रारूप में वापस कनवर्ट करना चाहता हूं। –

+0

हालांकि यह मेरा मुद्दा है, हालांकि, डेटाबेस में 'दिनांक' स्टोर करें, फिर आपको प्रारूप (और आपको नहीं करना चाहिए) की परवाह नहीं है, आपको जहां भी संभव हो, प्रारूप में ऑब्जेक्ट्स का स्वरूपण प्रदान करना चाहिए उपयोगकर्ता उम्मीद कर रहा है, नहीं कि आप – MadProgrammer

0
  • आप
  • उपयोग SimpleDateFormat प्रारूप = नए SimpleDateFormat SimpleDateFormater को ("EEEE, MMMM DD, YYYY") के बजाय SimpleDateFormat के लिए = नए SimpleDateFormat ("dd/mm/yyyy") गलत पैरामीटर गुजर रहे हैं;
  • यह आपके अवांछनीय दिनांक समस्या को हल करता है।
+0

क्या चाहते हैं धन्यवाद @ रंजीत। लेकिन, मेरा मतलब है कि मैं बस किसी भी दिनांक प्रारूप को अपने कस्टम प्रारूप में रूपांतरित करना चाहता हूं। वैरिएबल डेट प्रारूप को किसी विशिष्ट प्रारूप में कनवर्ट करने का कोई तरीका है? –

+0

@ तिहा ज़ो: फिर आपको सभी संभावित संयोजन के लिए रेगेक्स लिखने की आवश्यकता है। – Ranjeet

0

कोशिश कुछ इस तरह उपयोग करने के लिए:

public static String dateToString(String date){ 
    if(date.equals("")) return ""; 
    if(date == null || date.length() == 0){ 
     return ""; 
    } 
    SimpleDateFormat formatIn = new SimpleDateFormat("dd/MM/yyyy"); 
    SimpleDateFormat formatOut = new SimpleDateFormat("yyyy-dd-MM"); 

    try { 
     Date l_date = formatIn.parse(date); 
     String result = formatOut.format(l_date); 
     return result; 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return ""; 
    } 
} 

लेकिन आप यह भी इस तरह

कुछ बजाय स्ट्रिंग java.sql.Date उपयोग कर सकते हैं यदि आप डेटाबेस में कुछ डेटा रखना चाहते हैं:

SimpleDateFormat format = new SimpleDateFormat(); 

Connection conn = ... 
PreparedStatement ps = conn.prepareStatement("..."); 

long lDate = format.parse(sDate).getTime(); 
java.sql.Date dDate = new java.sql.Date(lDate); 
ps.setDate(1, dDate); 
संबंधित मुद्दे