2013-11-27 7 views
8

मेरे पास इस 2013-10-22T01:37:56 की तरह एक स्ट्रिंग है। मुझे इस स्ट्रिंग को यूटीसी दिनांक प्रारूप में बदलने की आवश्यकता है जैसे MM/dd/yyyy KK:mm:ss a। मैंने कुछ कोड की कोशिश की है लेकिन यह यूटीसी डेटाटाइम वापस नहीं कर रहा है।यूटीसी प्रारूप में दिनांक जावा

मेरे कोड

 String[] time = itsAlarmDttm.split("T"); 
     String aFormatDate = time[0]+ " "+time[1]; 
     String aRevisedDate = null; 
     try { 
      final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      final Date dateObj = sdf.parse(aFormatDate); 
      aRevisedDate = new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a").format(dateObj); 
      System.out.println(aRevisedDate); 
     } catch (ParseException e) { 
      itsLogger.error("Error occured in Parsing the Data Time Object: " +e.getMessage()); 
     } catch (Exception e) { 
      itsLogger.error("Error occured in Data Time Objecct: " +e.getMessage()); 
     } 

मैं हो रही है उत्पादन MM/dd/yyyy KK:mm:ss a प्रारूप है। लेकिन यूटीसी समय प्रारूप नहीं। इस समस्या को हल करने के लिए कैसे?

+0

यह क्या लौट रहा है? – Buddha

+1

दिनांक ओबीजे प्रिंट करने के बजाय शायद आपको एक संशोधित दिनांक मुद्रित करना चाहिए? – Julien

+4

यूटीसी एक विशिष्ट दिनांक प्रारूप नहीं है लेकिन समय क्षेत्र की तरह कुछ है। – Henry

उत्तर

9

कोशिश Z या z समय क्षेत्र झंडे के साथ अपनी तिथि फ़ॉर्मेट करने के लिए:

new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a Z").format(dateObj); 
15

प्रयास करें इस ... मेरे लिए काम किया और मुद्रित 10/22/2013 01:37:56 AM इस बेशक अपने कोड केवल छोटे संशोधनों के साथ है।

final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); // This line converts the given date into UTC time zone 
final java.util.Date dateObj = sdf.parse("2013-10-22T01:37:56"); 

aRevisedDate = new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a").format(dateObj); 
System.out.println(aRevisedDate); 
+0

sdf.setTimeZone (TimeZone.getTimeZone ("यूटीसी")); - यह वही है जो मैं –

+1

के लिए देख रहा था उदाहरण उदाहरण अराजक है। "sdf.setTimeZone (...)" sdf.parse (...) "के बाद आता है"। और "प्रारूप (dateObj)" एक नया SimpleDateFormat का उपयोग करता है। तो "सेटटाइमज़ोन" का यहां कुछ भी प्रभाव नहीं पड़ता है। हालांकि यह सही संकेत है। – jox

2
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
// or SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a Z"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
System.out.println(sdf.format(new Date())); 
4

क्या समय क्षेत्र?

आपके प्रश्न में जहां आप time zone का उल्लेख करते हैं। इनपुट स्ट्रिंग का क्या समय क्षेत्र निहित है? आप अपने आउटपुट के लिए किस समय क्षेत्र चाहते हैं? और, UTC एक समय क्षेत्र (या आपकी मानसिकता के आधार पर इसकी कमी) एक स्ट्रिंग प्रारूप नहीं है।

आईएसओ 8601

आपका इनपुट स्ट्रिंग को छोड़कर यह एक offset from UTC का अभाव है कि ISO 8601 प्रारूप में है।

Joda समय

यहाँ आप को दिखाने के लिए कैसे समय क्षेत्रों को संभालने के लिए Joda-Time 2.3 में मौजूद कुछ उदाहरण कोड है। जोडा-टाइम ने दिनांक-समय मानों के स्ट्रिंग प्रस्तुतियों को पार्सिंग और जनरेट करने के लिए डिफ़ॉल्ट formatters बनाया है।

String input = "2013-10-22T01:37:56"; 
DateTime dateTimeUtc = new DateTime(input, DateTimeZone.UTC); 
DateTime dateTimeMontréal = dateTimeUtc.withZone(DateTimeZone.forID("America/Montreal"); 
String output = dateTimeMontréal.toString(); 

अन्य प्रारूपों में स्ट्रिंग प्रस्तुतियों को उत्पन्न करने के लिए, "जोडा प्रारूप" के लिए स्टैक ओवरव्लो खोजें।

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