2011-01-11 14 views
44

मैं कुछ और गणना करने से पहले टाइमज़ोन की जानकारी को स्थानीयडेट में वापस जोड़ने की कोशिश कर रहा हूं। लोकलडेट ऑब्जेक्टलैब लोकलडेट कैलकुलेटर का उपयोग किसी मौजूदा डेटटाइम में दिन जोड़ने के लिए आया था, लेकिन विधि को एक अंतराल बनाने के लिए एक संशोधित पठनीय इंस्टेंट को वापस करने की आवश्यकता है जिसे मैं देख सकता हूं।जोडा लोकाल्डेट से जोडा डेटटाइम को कैसे परिवर्तित करें?

कोड मैं Joda दिनांक समय के लिए Joda LOCALDATE के रूपांतरण के लिए मात्रा में कोशिश कर रहा हूँ:

LocalDate contextLocalBusinessDate = calculator.getCurrentBusinessDate(); 
DateTime businessDateAsInContextLocation = new DateTime(contextLocalBusinessDate, contextTimeZone); 

त्रुटि मैं Joda के रूपांतरण सिस्टम से है:

java.lang.IllegalArgumentException: No instant converter found for type: org.joda.time.LocalDate 
     at org.joda.time.convert.ConverterManager.getInstantConverter(ConverterManager.java:165) 
     at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:147) 
     at org.joda.time.DateTime.<init>(DateTime.java:192) 

मैं तलाश कर रहा हूँ इस समस्या का समाधान, या एक कार्यवाही जिसके परिणामस्वरूप पूर्ण टाइमज़ोन जानकारी के साथ एक सटीक अंतराल होता है।

उत्तर

66

इस के लिए LocalDate पर विभिन्न तरीकों रहे हैं, जिनमें शामिल हैं:

आप क्या आप चाहते हैं के बारे में स्पष्ट होना जरूरी फिर से होने के लिए समय घटक DateTime ऑब्जेक्ट का झुकाव, यही कारण है कि DateTime का सामान्य-रूपांतरण कन्स्ट्रक्टर ऐसा नहीं कर सकता है।

+11

स्पॉट ऑन। एक बात के बारे में पता होना चाहिए: toDateTimeAtStartOfDay का मतलब "आधी रात" नहीं है ... कुछ समय क्षेत्र मध्यरात्रि से 1 बजे तक जाने के लिए डेलाइट सेविंग परिवर्तनों को लागू करते हैं। –

+0

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

+0

कृपया मदद करें - मैं अपने स्थानीयडेट ऑब्जेक्ट पर इनमें से कोई भी तरीका नहीं देख सकता। आपके उत्तर में '::' नोटेशन का क्या अर्थ है? –