2010-04-29 17 views
28

को मैं इस प्रारूप में एक SQLite डेटाबेस में दिनांक भंडारण कर रहा हूँ:Convert स्ट्रिंग java.util.Date

d-MMM-yyyy,HH:mm:ss aaa 

जब मैं उस प्रारूप मैं हर चीज ठीक घंटे को छोड़कर प्राप्त कर रहा हूँ के साथ तारीख को पुनः प्राप्त। घंटा हमेशा 00 है।

String date--->29-Apr-2010,13:00:14 PM 
After convrting Date--->1272479414000--Thu Apr 29 00:00:14 GMT+05:30 2010 

यहाँ कोड है:: यहाँ मेरी उत्पादन होता है

Date lScheduledDate = CalendarObj.getTime(); 
    DateFormat formatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa"); 
    SomeClassObj.setTime(formatter.format(lScheduledDate)); 

    String lNextDate = SomeClassObj.getTime(); 
    DateFormat lFormatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa"); 
    Date lNextDate = (Date)lFormatter.parse(lNextDate); 
    System.out.println("output here"+lNextDate); 

क्या मैं गलत कर रहा हूँ?

+0

चाहिए आप तारीख –

+0

मैं कोड –

+3

ठीक साथी समस्या हल निर्दिष्ट किया है, AM/PM "पत्र aaa" प्रारूप में के साथ समस्या यह पार्स करने के लिए उपयोग करें कोड जोड़ कृपया, जैसा कि मैंने 'एचएच', 'एएए' का उपयोग कर रहा उपयोग नहीं किया जाता है, अगर आप 'aaa' का उपयोग करते हैं तो 'hh' –

उत्तर

50

मुझे लगता है कि आपकी तिथि प्रारूप समझ में नहीं आता है। कोई 13:00 बजे नहीं है। अपने प्रारूप के अंत में "aaa" निकालें या एचएच को एचएच में बदलें।

फिर भी, यह मेरे लिए ठीक काम करता है:

String testDate = "29-Apr-2010,13:00:14 PM"; 
DateFormat formatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa"); 
Date date = formatter.parse(testDate); 
System.out.println(date); 

यह प्रिंट "गुरु अप्रैल 29 13:00:14 CEST 2010"। उपरोक्त कोड आपके सिस्टम पर क्या प्रिंट करता है? यदि यह काम करता है, तो क्या आप अपना उदाहरण उस कामकाजी व्यक्ति को कम कर सकते हैं जो समस्या दिखाता है?

2

आपको अपने डेटफॉर्मैट में टाइमज़ोन सेट करना चाहिए, अन्यथा यह डिफ़ॉल्ट का उपयोग करेगा (कंप्यूटर की सेटिंग्स के आधार पर)।

+0

मैंने प्रारूप में टाइमज़ोन को अक्षर जेड के रूप में निर्दिष्ट किया है, समस्या अभी भी –

+0

बनी हुई है आपकी तिथि स्ट्रिंग में समय क्षेत्र जानकारी नहीं है, इसलिए z अक्षर मदद नहीं करेगा, इसके बजाय SimpleDateFormat ऑब्जेक्ट पर setTimeZone (...) का उपयोग करें – Guillaume

4

ऐसा लगता है जैसे आप SimpleDateFormat जैसे कुछ का उपयोग करना चाह सकते हैं। http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

आप अपना दिनांक प्रारूप घोषित करते हैं और फिर अपनी स्ट्रिंग के साथ पार्स विधि को कॉल करते हैं।

private static final DateFormat DF = new SimpleDateFormat(...); 
Date myDate = DF.parse("1234"); 

और जैसा कि Guillaume कहते हैं, समय क्षेत्र सेट!

+0

संबंधित नहीं लेकिन डेटफॉर्मेट ऑब्जेक्ट्स थ्रेड सुरक्षित नहीं हैं, उन्हें स्थैतिक घोषित नहीं किया जाना चाहिए क्योंकि इससे अधिक संभावना है कि उन्हें किसी बिंदु पर विभिन्न धागे से एक्सेस किया जाएगा। – Guillaume

संबंधित मुद्दे