2009-09-24 13 views
9

डेटाबेस यूटीसी में डेटा है और जब मैं डेटा प्राप्त करने की कोशिशजावा ResultSet कैसे यूटीसी में getTimeStamp को

java.util.Calendar cal = Calendar.getInstance(); 
cal.setTimeZone(TimeZone.getTimeZone("UTC")); 
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME); 
cal.setTime(ts); 

क्या इस के साथ गलत है?

+3

आप हमें बताएं, आप सवाल पूछ रहे हैं। क्या आपने वास्तव में कोशिश की है? क्या यह परिणाम नहीं देता है जिसे आप उम्मीद कर रहे थे? यदि हां, तो आप क्या उम्मीद कर रहे थे, और इसके परिणाम क्या थे? और जब आप अपने स्वयं के क्वेरी टूल का उपयोग करते हैं तो डेटाबेस आपको क्या बताता है? – kdgregory

+1

हां मैंने कोशिश की, हाँ यह उन परिणामों को नहीं दे रहा है जिनकी मैं उम्मीद कर रहा हूं। डेटाबेस में यूटीसी मान है और यह कोड डीबी में पहले से मौजूद मौजूदा मान में +8 जोड़ता है। – kal

+0

मेरा मतलब है +8 घंटे – kal

उत्तर

6

आपकी तिथिफॉर्मेट उदाहरण स्थानीय समय में मूल्य प्रदर्शित करने की संभावना है।

java.util.Calendar cal = Calendar.getInstance(); 
cal.setTimeZone(TimeZone.getTimeZone("UTC")); 
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME); 
cal.setTime(ts); 

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss z"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
System.out.println(sdf.format(cal.getTime())); 

संपादित करें:: जब आपके मूल्य को प्रदर्शित करने, इस आजमाइए अपनी टिप्पणी के लिए: क्या होगा यदि मैं जीएमटी उपयोग करते हैं, कि SimpleDateFormat

में

SimpleDateFormat एक मुद्दा होगा

कर सकते हैं सामान्य टाइमज़ोन (जीएमटी +/- एन), RFC822 का उपयोग करें, और टेक्स्ट ("यदि उनके पास नाम हैं" जावाडोक राज्यों के रूप में - नामों के बारे में जानकारी के लिए this post देखें)।

+0

यदि मैं जीएमटी का उपयोग करता हूं, तो क्या यह SimpleDateFormat – kal

+0

में एक समस्या होगी, पोस्ट में मेरे संपादन देखें। – akf

24
java.util.Calendar cal = Calendar.getInstance(); 
cal.setTimeZone(TimeZone.getTimeZone("UTC")); 
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME, cal); 

यह चाल चलाना चाहिए!

+2

इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए;) – Kirby

+0

ध्यान दें कि http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getTimestamp%28int,% पर डॉक्यूमेनेशन के अनुसार 20java.util.Calendar% 29 यह केवल तभी काम करेगा जब अंतर्निहित डेटाबेस टाइमस्टैम्प जानकारी – arahant

+0

@arahant स्टोर नहीं करता है, अगर अंतर्निहित डीबी टाइमज़ोन (टाइमस्टैम्प नहीं) जानकारी संग्रहीत करता है तो टाइमस्टैम्प सही टाइमज़ोन में कोई समस्या नहीं है। समस्या तब होती है जब टाइमस्टैम्प को यूटीसी में टाइमज़ोन जानकारी के बिना संग्रहीत किया जाता है, क्योंकि जावा टाइमस्टैम्प ऑब्जेक्ट बनाने के लिए स्थानीय मशीन के टाइमज़ोन का उपयोग करेगा। – Paul

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