2011-10-24 23 views
7

जोडा टाइमज़ोन के साथ खेल रहा था और निम्नलिखित पाया जो अजीब लग रहा था।जोडा समय क्षेत्र गणना

मैं निम्नलिखित कोड

DateTimeZone gmt = DateTimeZone.forID("Etc/GMT"); 
    DateTimeZone gmtPlusOne = DateTimeZone.forID("Etc/GMT+1"); 
    DateTimeZone gmtMinusOne = DateTimeZone.forID("Etc/GMT-1"); 

    System.out.println(new DateTime(gmt).toString()); 
    System.out.println(new DateTime(gmtPlusOne).toString()); 
    System.out.println(new DateTime(gmtMinusOne).toString()); 

भाग गया और निम्न उत्पादन मिला

2011-10-24T13:00:12.890Z 
2011-10-24T12:00:12.937-01:00 
2011-10-24T14:00:12.937+01:00 

मैं था एक सा "gmtPlusOne" को देखने के लिए -01 के साथ पीछे एक घंटे के रूप में बाहर आ रही हैरान: 00 और "gmtMinusOne" के लिए विपरीत। क्या कोई यह समझा सकता है कि ये इस तरह क्यों बाहर आते हैं क्योंकि मैं विपरीत की अपेक्षा करता।

+2

डॉन ' टी चिंता मत करो जॉन किसी भी मिनट में होगा ;-) – Voo

उत्तर

15

यह प्रलेखन http://joda-time.sourceforge.net/timezones.html इस के लिए इतना सहज ज्ञान युक्त व्यवहार का कारण बताता है। यह कहता है कि Etc/GMT+1 में -1:00 और Etc/GMT-1 का मानक ऑफ़सेट +1:00 का मानक ऑफसेट है। ऑफ़सेट का यह उलटा Etc/GMT+n के लिए है।

wiki से

आदि का विशेष क्षेत्र कुछ प्रशासनिक क्षेत्रों के लिए प्रयोग किया जाता है, विशेष रूप से "आदि/यूटीसी" जो समन्वित सार्वभौमिक समय का प्रतिनिधित्व करता है के लिए । POSIX शैली के अनुरूप होने के लिए, उन क्षेत्र नाम "एटीसी/जीएमटी" से शुरू होते हैं, जिनके संकेत लोगों की अपेक्षा करते हैं। इस शैली में, जीएमटी के पश्चिम क्षेत्रों के लिए एक सकारात्मक संकेत है और उन पूर्व उनके नाम में एक नकारात्मक चिह्न है (उदाहरण के लिए "आदि/GMT-14" जीएमटी के 14 घंटे है आगे/पूर्व।)

+0

ऐप्पल इस पॉज़िक्स मुद्दे पर [इस पाठ फ़ाइल] में चर्चा करता है (http://opensource.apple.com/source/system_cmds/system_cmds-230/zic.tproj/datfiles/etcetera) । 'हम ज़ोन नामों और आउटपुट संक्षेप में पॉज़िक्स-स्टाइल संकेतों का उपयोग करते हैं, भले ही यह कई लोगों की अपेक्षा के विपरीत है। पीओएसईक्स में ग्रीनविच के पश्चिम में सकारात्मक संकेत हैं, लेकिन कई लोग ग्रीनविच के पूर्व में सकारात्मक संकेतों की अपेक्षा करते हैं। उदाहरण के लिए, टीजेड = 'एटीसी/जीएमटी + 4' संक्षेप में "जीएमटी + 4" का उपयोग करता है और यूटीसी (यानि ग्रीनविच के पश्चिम) के पीछे 4 घंटे के अनुरूप है, भले ही कई लोग यूटीसी (यानी पूर्व से 4 घंटे आगे का मतलब लें) ग्रीनविच का)। –

+0

ये 'एटीसी' अनावश्यक होना चाहिए। एक [उचित समय क्षेत्र का नाम] (http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) का उपयोग करें, आमतौर पर एक महाद्वीप + स्लैश + शहर/क्षेत्र जैसे 'एशिया/कोलकाता' या 'अमेरिका/मॉन्ट्रियल'। –

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