2013-04-06 255 views
2

我有一個類型爲「2013-03-28T15:16:58.000Z」的日期值。我想將它轉換爲「dd-MMM-yyyy」格式。對於這一點,我已經使用了下面的代碼:SimpleDateFormat解析返回null

public static String getTime(String time) 
{ 
    try 
    {   
     String tim = time.replace("T", " "); 
     SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ", Locale.US); 
     SimpleDateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 

     return df2.format(df1.parse(tim)); 
    } 
    catch (ParseException e) 
    { 
     return null; 
    } 
} 

我從各種這裏的StackOverflow職位的這一解決方案。但是這段代碼仍然返回null。誰能告訴我爲什麼?

回答

4

null值正在從異常塊返回由於第一SimpleDateFormat返回null作爲無效日期格式的結果。

Z圖案用於表示時區模式。要接受文字Z字符,則需要圍繞字符與單引號。

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'Z'", Locale.US); 

此外,您還可以做同樣的與T字符,如果你不希望做一個手動更換:

而不是

String tim = time.replace("T", " "); // remove 

只是使用time及用途:

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US); 
0

它拋出ParseException解析字符串2013-03-28 15:16:58.000Z。

儘量擺脫的Z [喜歡你與T做]並使用SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US)

+1

或者嘗試治療兩個z和T妥善像下面的問題,但具有下列另外'新的SimpleDateFormat( 「YYYY-MM-dd'T'HH:MM:ss.SSS'Z'原」,Locale.US) ;' – ararog 2013-04-06 20:57:55

2

它返回null,因爲它趕上一個ParseException,你告訴它返回null。你應該至少打印出堆棧跟蹤,這應該告訴你爲什麼你所得到的ParseException的。