2015-08-19 27 views
0

我試圖將Date字符串轉換爲日期,但是SimpleDateFormat.parse在添加時間時不會返回任何內容。SimpleDateFormat解析不會返回任何時間

這是日期字符串:

String dateInString = news.getDate(); 
Log.e(TAG, "Date in String: " + dateInString); 

Date in String: 2015-08-19T06:21:59+01:00 //Result 

當我這樣做:

DateFormat format 
      = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);   
Date date; 
    try { 

     date = format.parse(dateInString); 
     Log.e(TAG, "Formatted date: " + date); 


    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

我得到的結果是:Formatted date: Wed Aug 19 01:00:00 GMT+01:00 2015

如果我的時間增加的SimpleDateFormat:

DateFormat format 
     = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH); 

代碼甚至沒有通過嘗試,也沒有拋出任何異常。沒有任何打印。

我都試過,沒有運氣加上TimeZone

TimeZone timeZone = TimeZone.getTimeZone("UTC+01"); //also tried GMT+1:00, UTC+1:00 and UTC 
    DateFormat format 
      = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH); 
    format.setTimeZone(timeZone); 

    try { 

     date = format.parse(dateInString); 
     Log.e(TAG, "Formatted date: " + date); 


    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

任何指針?

+0

'yyyy-MM-dd'T'HH:mm:ssXXX'模式應該適用於您的格式。並且設置時區可以省略,因爲它在日期/時間字符串中定義。 –

+0

@SashaSalauyou我使用你的建議得到一個'java.lang.IllegalArgumentException:未知模式字符'X''。安迪的工作,但我不知道他爲什麼刪除他的評論 –

+0

'X'是自Java 1.7以來的可用! –

回答

1

的sed的SimpleDataFormat的模式不正確,用這一個:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ", Locale.ENGLISH); 

通知圖案略有不同,我添加一件T文字分離的日期和時間,也是ZZZZZ它說,有時區那裏。

+0

適用於我... –

0
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX",Locale.ENGLISH); 

'X'標誌自1.7開始可用,它代表時區。

所有可用的標誌都在這裏 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

+0

看看這個問題的意見 –

+0

請編輯更多的信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。我們在這裏努力成爲知識的資源。 –

0

描述我想有幾種方法可以做到這一點。除了阿圖羅的回答,這也適用:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.English);