2012-05-07 17 views
9

Date.getTimezoneOffset के लिए दस्तावेज़ का कहना है:दिनांक क्यों था .getTimezone ऑफ़सेट बहिष्कृत?

पदावनत। जेडीके संस्करण 1.1 के अनुसार, - (कैलेंडर.get (कैलेंडर.ज़ोनिओएफएफएसटीटी) + कैलेंडर.get (कैलेंडर.डीएसओएफओएफएसटी))/(60 * 1000) द्वारा प्रतिस्थापित किया गया।

इसे क्यों हटा दिया गया था? क्या यूटीसी से ऑफसेट मिनट/मिनट में ऑफसेट प्राप्त करने के लिए एक छोटा रास्ता (अपाचे कॉमन्स?) है? मेरे पास डेट ऑब्जेक्ट है ... क्या मुझे इसे इसके लिए जोडाडेट में बदलना चाहिए?

और इससे पहले कि आप पूछें कि मैं यूटीसी ऑफसेट क्यों चाहता हूं - यह सिर्फ इसे लॉग इन करना है, और कुछ नहीं।

+2

आपको जावा IMHO में दिनांक और समय प्रबंधन से संबंधित किसी भी चीज़ के लिए जोडाटाइम पर स्विच करना चाहिए। – pcalcao

+4

क्योंकि हर टाइमज़ोन ऑफसेट एक पूर्णांक नहीं है। दूसरे शब्दों में, प्रत्येक टाइमज़ोन आसन्न समय क्षेत्र से पहले या बाद में एक घंटे नहीं है। Http://www.timeanddate.com/worldclock/ –

+2

@GilbertLeBlanc देखें - यह मिनटों में, मिनटों तक नहीं लौटाता है। – ripper234

उत्तर

10

यहां 2 प्रश्न हैं।

  1. दिनांक क्यों था .getTimezoneOffset को बहिष्कृत किया गया था?

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

  1. शॉर्टकट? लेकिन क्या कॉल

Calendar.get(Calendar.DST_OFFSET) जहां तक ​​मैं देख सकता हूँ अंतर 6 अक्षर है Calendar.getTimeZoneOffset()

की तुलना के साथ गलत है।

जोडा एक बहुत ही मजबूत लाइब्रेरी है और यदि आपको वास्तव में बहुत परिष्कृत तारीख मैनिपुलेशन कोड स्विच लिखना है। मैं व्यक्तिगत रूप से मानक java.util.Calendar का उपयोग करता हूं और बाहरी पुस्तकालयों का उपयोग करने का कोई कारण नहीं दिखता: अच्छा पुराना कैलेंडर मेरे लिए काफी अच्छा है।

+1

+1। –

+0

मैं इसे 'तारीख के सभी तरीकों को वास्तव में बहिष्कृत करने' के लिए स्वीकार करूंगा। प्रत्येक व्यक्ति जो मैं जोड-चिल पर स्विच करने की सिफारिश करता हूं, कृपया यह एक एपीआई में डेट ऑब्जेक्ट है जिसका मैं उपयोग कर रहा हूं, मैं अब एपीआई को वास्तव में नहीं बदल सकता, मैं कर सकता हूं। – ripper234

3

तारीख हेरफेर तर्क के सभी Date से बाहर ले जाया गया था एक बार जावा कार्यान्वयन महसूस किया कि यह कैलेंडर के विभिन्न प्रकार के लिए अलग तरह से लागू किया जाना आवश्यकता हो सकती है कि (इसलिए एक GregorianCalendar उपयोग करने के लिए अब इस जानकारी को पुनः प्राप्त करने की जरूरत है)। एक Date अब यूटीसी समय मूल्य के आसपास एक रैपर है।

2

इस पृष्ठ से कोड पेस्ट करने से पहले सावधानी बरतें। शायद सिर्फ मुझे लेकिन मुझे विश्वास है कि आदेश TZ मिनट में ऑफसेट यदि आप इसके बजाय क्या जावाडोक कहते हैं की तुलना में

int tzOffsetMin = (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET))/(1000*60); 

क्या करने की जरूरत है, जो प्राप्त करने के लिए:

int tzOffsetMin = -(cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET))/(1000*60); 



Calendar.ZONE_OFFSET आपको यूटीसी से मानक ऑफ़सेट (एमसीईसीएस) देता है। यह डीएसटी के साथ नहीं बदलता है। उदाहरण के लिए यूएस ईस्ट कोस्ट टाइमज़ोन के लिए यह क्षेत्र हमेशा डीएसटी के बावजूद -6 घंटे होगा।

Calendar.DST_OFFSET आपको वर्तमान डीएसटी ऑफसेट (एमसीईसीएस में) देता है - यदि कोई हो।उदाहरण के लिए, उस देश में गर्मी के दौरान जो डीएसटी का उपयोग करता है, इस क्षेत्र में मूल्य +1 घंटा (1000 * 60 * 60 एमसीईसी) होने की संभावना है।

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