2011-10-31 21 views
6

पार्सिंग के बाद जब मैं जीएमटी टाइमज़ोन के साथ इनपुट डेट स्ट्रिंग देता हूं, तो SimpleDateFormat इसे पार करता है और ईईटी टाइमज़ोन आउटपुट करता है? जावा सिंपलडेटफॉर्मेट गलत टाइमज़ोन

public static String DATE_FORMAT="dd MMM yyyy hh:mm:ss z"; 
public static String CURRENT_DATE_STRING ="31 October 2011 11:19:56 GMT"; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(simpleDateFormat.parseObject(CURRENT_DATE_STRING)); 

और उत्पादन होता है: सोम अक्टू 31 13:19:56 EET 2011 बजाय सोम अक्टू 31 13:19:56 GMT 2011

उत्तर

10

आप Date.toString() का परिणाम बाहर प्रिंट कर रहे। एक Date में टाइमज़ोन की कोई अवधारणा नहीं है - यह यूटीसी यूनिक्स युग के बाद से मिलीसेकंड की संख्या है। Date.toString()हमेशा सिस्टम डिफ़ॉल्ट समय क्षेत्र का उपयोग करता है।

नोट आप उम्मीद नहीं करनी चाहिए कि जा "सोम अक्टू 31 13:19:56 GMT 2011" यह देखते हुए कि आप एक समय में 11 की एक जीएमटी घंटे निर्दिष्ट करता है, नहीं 13.

अगर आप चाहते हैं दे दिया है प्रिंटिंग के लिए एक विशिष्ट समय क्षेत्र का उपयोग करने के लिए, आपको Date.toString() का उपयोग करने के बजाय प्रिंटिंग के लिए DateFormat का उपयोग करना चाहिए। (Date.toString() इस तरह भ्रम पैदा करता है; यह वास्तव में दुर्भाग्यपूर्ण है।)

+0

धन्यवाद, त्वरित उत्तर के लिए धन्यवाद। – IgorDiy

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