2012-08-28 11 views
15

क्या डेटटाइम क्लास की parse विधि में फ़ॉर्मेटर की शैली स्ट्रिंग की सटीक शैली से मेल खाना पड़ेगी? उदाहरण के लिए, मुझे डेटाबेस (ओरेकल) से टाइमस्टैम्प ऑब्जेक्ट मिल रहा है और इसे एक स्ट्रिंग में परिवर्तित कर रहा है। डेटाबेस में टाइमस्टैम्प की तरह संग्रहीत किया जाता है इसजोडाटाइम DateTime.parse (स्ट्रिंग, फॉर्मेटर) को समझना

08-Aug-12 12.00.00.000000000 AM

मैं इस शैली

String pattern = "dd-MMM-yy"; 

मैं इस अपवाद प्राप्त करने के लिए मेरी फ़ॉर्मेटर सेट

java.lang.IllegalArgumentException: Invalid format: "08-AUG-12 12.00.00 AM" is malformed at " 12.00.00 AM" 

org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866) 

org.joda.time.DateTime.parse(DateTime.java:144) 

इसका क्या अर्थ है और मैं इसे ठीक करने के बारे में कैसे जाऊं? जब मैं "yy-MMM-dd hh.mm.ss aa" करने के लिए अपने फ़ॉर्मेटर सेट मैं एक अपवाद नहीं मिलता है, लेकिन यह इस तरह ब्राउज़र में प्रिंट: 2008-08-12T00:00:00.000-04:00, लेकिन यह बजाय के रूप में "dd-MMM-yy hh:mm:ss aa"

उत्तर

40

उपयोग LocalDateTime प्रिंट करने के लिए मैं की जरूरत है:

String input = "08-AUG-12 12.00.00 AM"; 
String pattern = "dd-MMM-yy hh.mm.ss aa"; 

LocalDateTime localDateTime = LocalDateTime.parse(input, DateTimeFormat.forPattern(pattern)); 

संपादित

तथ्य की बात के रूप में आप भी दिनांक समय के साथ यह कर सकते हैं:

private static String parseDateTime(String input){ 
    String pattern = "dd-MMM-yy hh.mm.ss aa"; 
    DateTime dateTime = DateTime.parse(input, DateTimeFormat.forPattern(pattern)); 
    return dateTime.toString("dd-MMM-yy hh:mm:ss aa"); 
} 
+0

जब मैं 'localDateTime.toString() का उपयोग करता हूं; 'यह अभी भी प्रिंट करता है जैसा मैंने मूल संदेश में इंगित किया था। – Robert

+0

@ मुझे लगता है कि टिप्पणी के लिए बहुत देर हो चुकी है :) आपने इसे स्वयं हल किया है। – Eugene

+0

दिशा के लिए TYhanks – Robert

2

इसे समझ लिया। सही प्रारूप प्राप्त करने के लिए, आपको formatter.print (localDateTime ऑब्जेक्ट) को कॉल करना होगा और यह काम करता है।

+2

आप टूस्ट्रिंग में उपयोग करने के लिए पैटर्न भी निर्दिष्ट कर सकते हैं .. localDateTime.toString ("dd-MMM-yy hh: mm: ss aa"); – Eugene

+0

यहां तक ​​कि बेहतर :-) – Robert

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