2011-05-19 10 views
23

पोस्टर here कहता है कि तिथि हमेशा यूटीसी समय में होती है। हालांकि, अगर मैं दिनांक() बना देता हूं, कैलेंडर बना देता हूं, और तिथि के साथ कैलेंडर समय सेट करता हूं, तो समय मेरा स्थानीय समय रहता है (और मैं यूटीसी समय पर नहीं हूं। मैंने कैलेंडर की तारीख को प्रिंट करके इसका परीक्षण किया है एक लूप में, एक घंटे प्रति लूप घटाकर। यह 1 9 मई को 11 बजे है, और 18 मई को तिथि बदलने से पहले इसमें 24 लूप लगते हैं। वर्तमान में यह 1 बजे यूटीसी है, इसलिए अगर कैलेंडर ठीक से सेट किया गया तो यह केवल तभी लिया जाएगा 14 छोरों।मैं यूटीसी समय के साथ कैलेंडर कैसे सेट कर सकता हूं?

Date date = new Date(); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 

    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); 

    int index = 0; 
    for(; index > -30; index--) 
    { 
     System.out.println(index); 
     System.out.println(dateFormatter.format(calendar.getTime())); 
     System.out.println(); 
     calendar.add(Calendar.HOUR, -1); 
    } 
+2

संभावना नकल: http://stackoverflow.com/q/2403109/668970 – developer

+1

मैं इसे एक शिकार है विश्वास नहीं है। पूरी तरह से अलग एपीआई। –

उत्तर

69

java.util.Calendar एक स्थिर कारखाने विधि है जो एक समय क्षेत्र लेता है।

Calendar.getInstance(java.util.TimeZone)

तो आप कह सकते हैं:

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
+0

बस यह जांचने के मामले में कि यह पहला है: TimeZone.getAvailableIDs(); – ssedano

+0

@ssedano क्यों? हम इसे सिर्फ यूटीसी में स्थापित कर रहे हैं। –

+1

ऐसा प्रतीत होता है कि कैलेंडर पर समय क्षेत्र सेट करना SimpleDateFormat ऑब्जेक्ट को प्रभावित नहीं करता है (यह आश्चर्यजनक नहीं है क्योंकि यह दिनांक वस्तु पर चल रहा है)। यूटीसी में व्याख्या की गई तारीख को मुद्रित करने के लिए मुझे 'SimpleDateFormat.setTimeZone()' का उपयोग करना पड़ा। –

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

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