2013-04-05 2 views
6

ईएसटी 5EDT से ईएसटी कितना अलग है? क्या ईएसटी डीएसटी खाते में नहीं है?टाइमज़ोन ईएसटी ईएसटी 5EDT से अलग कैसे है?

मैं एक छोटे से जावा टुकड़ा लिखा अंतर यह पता लगाने की है और उत्पादन का कहना है EST5EDT खाते में डीएसटी जबकि ईएसटी

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST5EDT")); 
System.out.println("EST5EDT" +dateFormat.format(new Date())); 
    /* prints EST5EDT2013-Apr-05 02:24:16.471 */ 


dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST")); 
System.out.println("EST "+dateFormat.format(new Date())); 
    /*prints EST 2013-Apr-05 01:24:16.472 */ 

नहीं करता, लेकिन नीचे के स्निपेट चौंकाने वाला उत्पादन

System.out.println("EST5EDT offset "+TimeZone.getTimeZone("EST5EDT").getRawOffset()/(60*60*1000)); 
/* prints 5 instead of 4 (DST) */ 

सकता है उत्पादन में ले जाता है कोई कृपया बताएं कि वास्तव में क्या हो रहा है? 4 के बजाय RawOffset 5 वापस क्यों मिलता है? डीएसटी के साथ टाइमज़ोन ऑफसेट कैसे प्राप्त करें?

+0

जब भी संभव हो ''EST' और' EST5EDT' शैली पहचानकर्ताओं से बचें। इसके बजाए 'अमेरिका/न्यू_यॉर्क' और संबंधित पहचानकर्ताओं का उपयोग करें। [यहां देखें] (http://www.nntp.perl.org/group/perl.datetime/2009/03/msg7221.html) और डुप्ली पोस्ट। –

उत्तर

6

क्या ईएसटी डीएसटी खाते में नहीं है?

नहीं। परिभाषा ईएसटी द्वारा "पूर्वी मानक समय" या यूटीसी -5: 00 है।

ईडीटी "पूर्वी डेलाइट टाइम" या यूटीसी -4: 00 है।

यह थोड़ा उलझन में है, उदाहरण के लिए, न्यूयॉर्क ईएसटी और ईडीटी के बीच स्विच करता है, और सीएटल पीएसटी और पीडीटी के बीच स्विच करता है।

कभी-कभी लोग गलत तरीके से कहेंगे "मैं आपको 1 बजे ईएसटी कहूंगा" जब वे वास्तव में कहेंगे, "मैं आपको 1 बजे पूर्वी समय कहूंगा" जो सही ढंग से ध्यान में रखता है कि यह डेलाइट सेविंग्स है या नहीं।

यह wikipage में कुछ और जानकारी है।

क्यों getRawOffset 4

Timezone.getRawOffset के बजाय लौटा रहा है 5 हमेशा के लिए मानक समय है, जो 5 * (60 * 60 * 1000)

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

+0

धन्यवाद कि getRawOffset संदेह स्पष्ट किया। मुझे अभी भी एक संदेह है टाइमज़ोन वर्तमान टाइमज़ोन = टाइमज़ोन .getTimeZone ("ईएसटी"); \t कैलेंडर वर्तमान डीटी = नया ग्रेगोरियन कैलेंडर (वर्तमान टाइमज़ोन, लोकेल.यूएस); \t System.out.println ("डेलाइट में ईएसटी" + टाइमज़ोन.getटाइमज़ोन ("ईएसटी")। इनडेलाइटटाइम (currentDt.getTime())); प्रिंट झूठी! ऐसा क्यों है ? – JeeZ

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