2012-11-27 11 views
7

में कनवर्ट करना मेरे पास एक विधि getCalendarFromClass है जो मुझे Calendar का ऑब्जेक्ट देता है।जोडा टाइम - कैलेंडर ऑब्जेक्ट को स्थानीयडेट

और मैं इसे fromCalendarFields विधि का उपयोग करके जोडा टाइम एपीआई के LocalDate में परिवर्तित कर रहा हूं।

LocalDate.fromCalendarFields(a.getCalendarFromClass()); 

लेकिन जब इस रूपांतरण प्रदर्शन के रूप में मैं इसे जावाडोक में नहीं मिला था कैसे TimeZone निर्दिष्ट कर सकते हैं।

fromCalendarFields विधि के लिए जावाडोक का उल्लेख है:

प्रत्येक क्षेत्र कैलेंडर से पूछे और LOCALDATE को सौंपा गया है। यह उपयोगी है यदि आप ज़ोन को अनदेखा करते हुए कैलेंडर को स्थानीय दिनांक के रूप में उपयोग कर रहे हैं।

उत्तर

7

Calendar में समय क्षेत्र है, और इसका उपयोग किया जाएगा (Calendar द्वारा) जब जोडा टाइम विभिन्न फ़ील्ड मानों का अनुरोध करता है। जोडा टाइम सिर्फ calendar.get(Calendar.YEAR) आदि का उपयोग करता है

लौटा LocalDate में समय क्षेत्र नहीं है, अवधारणात्मक रूप से।

+0

जहां से मुझे कैलेंडर प्राप्त हो रहा है, डीबी जीएमटी के रूप में समय क्षेत्र है लेकिन मैं पहले इसे ईएसटी में परिवर्तित करना चाहता हूं और फिर इसे – Abubakkar

+0

@Abu पर संसाधित करना चाहता हूं: क्या आपका मतलब है कि आप संग्रहीत * तत्काल * लेना चाहते हैं और इसे ईएसटी में परिवर्तित करना चाहते हैं (जिसके द्वारा मुझे लगता है कि आप तारीख के आधार पर ईडीटी/ईएसटी का मतलब है)? यदि ऐसा है, तो 'लोकलडेट' में कनवर्ट करने से पहले, सही समय क्षेत्र में 'कैलेंडर' पर समय क्षेत्र सेट करें। –

1

LocalDate आपको इच्छित कक्षा की तरह दिखता नहीं है। दस्तावेज़ में:

LOCALDATE बिना एक समय क्षेत्र अपरिवर्तनीय datetime वर्ग एक तारीख प्रतिनिधित्व करता है।

(मेरा जोर)

9

1) समय क्षेत्र प्राप्त करें:

TimeZone tz = calendar.getTimeZone(); 

2) कैलेंडर से एक Joda दिनांक समय बनाएँ:

DateTimeZone jodaTz = DateTimeZone.forID(tz.getID()); 
DateTime dateTime = new DateTime(calendar.getTimeInMillis(), jodaTz); 

3) एक LOCALDATE जाओ

LocalDate localDate = dateTime.toLocalDate(); 
संबंधित मुद्दे