2012-08-30 14 views
5

जोडा-टाइम-2.0 संस्करण लाइब्रेरी का उपयोग करके, मैं सोच रहा था, इनमें से कौन सा फ़ंक्शन किसी आईएसओ दिनांक से निर्मित करना बेहतर है (एक्सएमएल xs:dateTime प्रारूप): new DateTime(String) बनाम DateTime.parse(String)जोडा-टाइम: नया डेटटाइम (स्ट्रिंग) बनाम डेटटाइम.परसे (स्ट्रिंग)

क्योंकि दोनों एक ही मूल्य से एक अलग परिणाम लौटते हैं। उदाहरण:

new DateTime("2012-08-16T07:22:05Z") 
DateTime.parse("2012-08-16T07:22:05Z") 

आईएसओक्रोनोलॉजी के कारण अलग-अलग परिणाम। पहले कहते हैं ISOChronology[Europe/Paris] और दूसरा ISOChronology[UTC] है, हालांकि मिलीसेकंड समान हैं।

इसके अलावा, here पहले संस्करण (new) का उपयोग करने के समान परिणाम देने के साथ ISODateTimeFormat.dateTimeNoMillis() का उपयोग करने की सिफारिश करता है। , निर्माता InstantConverter का एक उदाहरण है, जो तार के मामले में एक StringConverter है और जो अभी तक पारित कर दिया स्ट्रिंग से समय क्षेत्र पढ़ने का समर्थन नहीं करता का उपयोग करता है, जबकि parse विधि एक का उपयोग करता है:

+0

प्रश्न क्या है? – Ilya

+1

आप किस संस्करण का उपयोग कर रहे हैं? –

+0

@Ilya बोल्ड के साथ सवाल संपादित किया। हालांकि मुझे लगता है कि यह एक क्रिस्टल स्पष्ट सवाल था ... – lucasvc

उत्तर

12

दो तरीकों दो अलग अलग तरीकों का उपयोग रूपांतरण DateTimeFormatter जो टाइमज़ोन को पार्स करने के बारे में जानता है।

हालांकि सिद्धांत में दोनों प्रारूप एक आईएसओ डेटाटाइम प्रारूप स्वीकार करते हैं, मुझे लगता है कि कन्स्ट्रक्टर छोटी है क्योंकि यह हमेशा स्ट्रिंग में निर्दिष्ट एक के बजाय सिस्टम टाइमज़ोन का उपयोग करता है। यह इस कन्स्ट्रक्टर द्वारा स्वीकार किए गए अन्य संभावित मूल्यों के साथ असंगत है, जो अपने टाइमज़ोन ऑफसेट के साथ एक कालक्रम को ध्यान में रखता है। उदाहरण के लिए, यह कन्स्ट्रक्टर यूटीसी टाइमज़ोन के साथ DateTime ऑब्जेक्ट लौटाएगा:

new DateTime(DateTime.parse("2012-08-16T07:22:05Z")) 
+0

का उल्लेख नहीं किया है, तो, 'DateTime.parse' का उपयोग करना बेहतर है, है ना? – lucasvc

+0

क्या निर्माता वास्तव में बग किया गया है या डिजाइन द्वारा अनदेखा टाइमज़ोन है? – Scorpio

+0

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

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