2010-11-16 13 views
5

डिफ़ॉल्ट रूप से, किस समय क्षेत्र java.util.Date.toString() प्रदर्शन करता है? चूंकि जावा DateUTC में किसी दिए गए दिनांक को संग्रहीत करता है और इसमें कोई स्पष्ट समय क्षेत्र नहीं है, Date.toString() होस्ट के लिए डिफ़ॉल्ट समय क्षेत्र या TimeZone.getDefault() प्रदर्शित करता है?क्या समय क्षेत्र दिनांक .toString() प्रदर्शित करता है?

उत्तर

10

यह TimeZone.getDefault() का उपयोग करके प्रदर्शित करता है जो बदले में ऑपरेटिंग सिस्टम के समय क्षेत्र (यानी मेजबान) के समय क्षेत्र में डिफ़ॉल्ट होगा। तो अभ्यास में, वे एक ही बात होगी

ध्यान दें कि जावा दिनांक वास्तव में एक तिथि नहीं है! यह समय में तत्काल है, युग की शुरुआत के बाद से मिलीसेकंड ऑफ़सेट द्वारा दर्शाया गया है। इसमें अभी भी विधियां हैं जो वर्ष, महीने आदि संदर्भित करती हैं लेकिन ये सभी बहिष्कृत हैं। आपको Date ऑब्जेक्ट का उपयोग नहीं करना चाहिए जैसे कि यह एक तिथि थी।

Calendar का उपयोग करें (हालांकि यह तर्कसंगत रूप से Date से भी अधिक टूटा हुआ है) या जोडा जैसे सभ्य पुस्तकालय।

+0

क्या कोई मौका है कि पूर्वी मानक समय (ईएसटी) का होस्ट टाइमज़ोन दिया गया है कि Date.toString() कभी-कभी समय क्षेत्र ईएसटी प्रदर्शित करेगा, लेकिन दूसरी बार पूर्वी डेलाइट टाइम (ईडीटी) प्रदर्शित करेगा? मैं इस अजीब व्यवहार को 'ToStringBuilder.reflectionToString (ऑब्जेक्ट)' के साथ देख रहा हूं, जो http://stackoverflow.com/questions/4198253/in-what-format-does-tostringbuilder-reflectiontostringobject-display-dates/4198295# के अनुसार 4198295, 'दिनांक' ऑब्जेक्ट्स प्रदर्शित करने के लिए 'Date.toString()' का उपयोग करता है। –

+0

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

+0

मेरा प्रश्न पर्याप्त स्पष्ट नहीं था। एक ऑब्जेक्ट को देखते हुए जिसमें एकाधिक 'दिनांक' ऑब्जेक्ट होते हैं, 'ToStringBuilder.reflectionToString (ऑब्जेक्ट)' ईएसटी समय क्षेत्र और ईडीटी के साथ अन्य तिथियों के साथ कुछ तिथियां प्रदर्शित करता है। क्या यह सभी को मेजबान समय क्षेत्र में प्रदर्शित नहीं करना चाहिए, इस मामले में ईएसटी? –

1

यह मेजबान के लिए सामान्य समय क्षेत्र , या TimeZone.getDefault दिखाता है()?

उत्तरार्द्ध (जो पूर्व के जैसा ही है जब तक कि आप इसे स्पष्ट रूप से कहीं भी सेट नहीं करते)। हालांकि, यह स्रोत कोड से प्राप्त जानकारी है, इसलिए इसे कार्यान्वयन विस्तार माना जाना चाहिए। यदि आप विशिष्ट दोहराने योग्य व्यवहार चाहते हैं, तो आपको इसे स्वयं लागू करना चाहिए।

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