मेरे जावा प्रोग्राम को वर्तमान स्थानीय टाइमज़ोन के साथ ईवेंट लॉग इन करने की आवश्यकता है। समस्या यह है कि उपयोगकर्ता के पास टाइमज़ोन को बदलने की क्षमता है, लेकिन अगर सिस्टम टाइमज़ोन बदल जाता है, तो जावा प्रोग्राम "पुराना" टाइमज़ोन के साथ चल रहा है।
रनटाइम पर जावा टाइमज़ोन परिवर्तन
मुझे लगता है कि जावा वी एम डिफ़ॉल्ट के रूप में समय क्षेत्र जब जावा कार्यक्रम चलाया जाता है सेट (Timezone.setDefault()
के लिए जावाडोक कहते हैं, "यह मूल रूप से मूल्य था जब वी एम पहली बार शुरू किया करने के लिए डिफ़ॉल्ट रीसेट करें।")
क्या यह सच है? जावा नए सिस्टम टाइमज़ोन में डिफ़ॉल्ट टाइमज़ोन अपडेट नहीं कर सकता है और इसलिए वीएम को पुनरारंभ करने की आवश्यकता है?
जावा 7 में, 'सेटडिफॉल्ट' ज़ोन तर्क लेता है, और यदि आप शून्य में पास करते हैं तो केवल मूल पर रीसेट हो जाता है: "यदि ज़ोन शून्य है, तो डिफ़ॉल्ट रूप से उस मान पर रीसेट करें जब मूल रूप से वीएम शुरू हुआ था।" [यहां एपीआई] (http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html#setDefault (java.util.TimeZone)) – azurefrog