2012-02-22 14 views
46

मैं वर्तमान में वर्तमान मुहावराJodatime की दिनांक समय के लिए यूटीसी करने के लिए दिनांक समय क्षेत्र को डिफ़ॉल्ट रूप से

DateTime now = new DateTime(DateTimeZone.UTC); 

वहाँ बहुत डिफ़ॉल्ट मैं यूटीसी आधारित दिनांक समय वस्तुओं डिफ़ॉल्ट निर्माता इसलिए का उपयोग कर बना सकते हैं कोई तरीका है का उपयोग कर यूटीसी दिनांक समय वस्तुओं बनाने हूँ यह अधिक अंतर्निहित है?

DateTime now = new DateTime(); 

उत्तर

60

आप केवल Joda समय के लिए डिफ़ॉल्ट समय क्षेत्र सेट करना चाहते हैं, DateTimeZone.setDefault का उपयोग करें।


आप समय क्षेत्र है कि पूरे JVM का उपयोग करता है TimeZone.setDefault विधि का उपयोग बदलना चाहते हैं।

सामान्य समय क्षेत्र प्रणाली संपत्ति user.timezone से प्राप्त होता है: बस इसे जल्दी स्थापित करने के लिए यकीन है कि के रूप में यह DateTimeZone.getDefault से Joda समय द्वारा संचित किया जा सकता है .. कोट किया जाना। यदि वह शून्य है या वैध पहचानकर्ता नहीं है, तो जेडीके टाइमज़ोन डिफ़ॉल्ट का मान परिवर्तित हो जाता है। यदि यह विफल रहता है, तो यूटीसी का उपयोग किया जाता है।

+8

नोट, जो _whole_ jvm को प्रभावित करेगा, जो ओपी चाहता है या नहीं हो सकता है। – jtahlborn

+4

जोड़ा गया कि इसे "केवल" जोडा समय ('DateTimeZone.setDefault') के लिए सेट करें। – dacwe

+4

मैं jtahlborn द्वारा सावधानी बरतना चाहता हूँ। 'TimeZone.setDefault' एक ही JVM में चल रहे * प्रत्येक ऐप * के प्रत्येक थ्रेड * को प्रभावित करता है। इस विधि को कॉल करने से अन्य वर्गों में सभी तरह के भ्रम और अप्रत्याशित व्यवहार पैदा हो सकते हैं। –

15

आप अतिरिक्त वर्ण के बारे में वास्तव में चिंतित हैं, तो बस एक सहायक विधि बनाने के लिए:

public static DateTime newUTCDateTime() { 
    return new DateTime(DateTimeZone.UTC); 
} 
संबंधित मुद्दे