2016-06-28 110 views
1

你好,我是轉換日期通過簡單的日期格式的方法,但它返回錯誤的輸出時間,正如我需要這個日期轉換爲本地時區

輸入:2016-06-28T08:19:05.721Z

輸出應爲:13:49:05

但它的返回:08:19:05

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
     Date newDate = null; 
     try { 
      newDate = format.parse("2016-06-28T08:19:05.721Z"); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     format = new SimpleDateFormat("hh:mm a"); 
     String date = format.format(newDate); 
+0

解決傳遞一個區域設置所述格式化 – silverFoxA

+0

輸入是2016-06-28T08:19:05.721Z,爲什麼輸出是13:49 :05? – ThiepLV

+0

你想做什麼?請詳細解釋。 –

回答

0

區域設置與模式一起傳遞給SimpleDateFormat。

SimpleDateFormat sd = new SimpleDateFormat("EEEE dd MMM yyyy", Locale.ENGLISH); 
0
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
     Date newDate = null; 
     try { 
      newDate = format.parse("2016-06-28T08:19:05.721Z"); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     format = new SimpleDateFormat("HH:mm a"); 
     String date = format.format(newDate); 
0

改變解析模式

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 

"yyyy-MM-dd'T'HH:mm:ss.SSSX" 

,使得輸入時區實際上是考慮到(而不是僅僅指望文字Z)。

對於格式化,使用您的默認時區並假設它是UTC + 05:30,您將得到您想要的輸出。

0
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
    Date newDate = null; 
    try { 
     newDate = format.parse("2016-06-28T08:19:05.721Z"); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    String date = format.format(newDate); 


    format .setTimeZone(TimeZone.getTimeZone("UTC")); 
    Date parsed = null; // => Date is in UTC now 
    try { 
     parsed = format .parse(date); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    TimeZone tz = TimeZone.getTimeZone("Asia/Kolkata"); 
    SimpleDateFormat destFormat = new SimpleDateFormat("HH:mm:ss"); 
    destFormat.setTimeZone(tz); 

    date = destFormat.format(parsed); 
    Log.e("date",date); 

我做this..Thanks所有:)

相關問題