2015-04-23 35 views
-1

我試着將「Wed,22 Apr 2015 05:45:42 GMT」轉換爲「yyyy MM dd - HH:mm」ParseException:無法解析日期:「Wed,22 Apr 2015 05:45:42 GMT」

但該字符串不適合在所有這些simpledateformats,它給例外日期格式三個

new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); 
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss"); 
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'Z'"); 
+0

你有任何CrashLog? –

+0

你的語言環境是什麼?嘗試使用新的SimpleDateFormat(「EEE,d MMM yyyy HH:mm:ss Z」,Locale.US)'' – Blackbelt

+0

我在西班牙,並且崩潰日誌是問題標題:ParseException:Unparseable date:「Wed,22 Apr, 2015 05:45:42 GMT「 – NullPointerException

回答

2

因爲我坐在非英語國家,所以我可以重現您的問題。解決方法是將英語指定爲語言,因爲您的輸入包含英文單詞/縮寫(請查看星期幾「星期三」!)。以下解決方案的工作原理如下:

SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH); 
Date d = sdf.parse("Wed, 22 Apr 2015 05:45:42 GMT"); 
SimpleDateFormat out = new SimpleDateFormat("yyyy MM dd - HH:mm", Locale.ROOT); 
System.out.println(out.format(d)); // output in the system timezone 

無論您的應用程序(全球與否)都無所謂。 唯一重要的事實是您的文字輸入的語言。如果這在語言上有所不同,那麼只有首先確定相關設備的語言(可能爲Locale.getDefault())並將其設置在您的SimpleDateFormat對象上。

+0

謝謝,用新的SimpleDateFormat(「EEE,dd MMM yyyy HH:mm:ss Z」,Locale.ENGLISH) – NullPointerException

0

使用小Z

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'z'"); 

我與檢查它下面的代碼,它工作中。

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
    try { 
     Date date =simpleDateFormat.parse("Wed, 22 Apr 2015 05:45:42 GMT"); 
     Log.e(MainActivity.class.getSimpleName(),"date : "+date.toString()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
+0

tryed,同樣的問題 – NullPointerException

+0

我編輯過的應該是dd而不是d z應小寫。 –

+0

你試過了嗎? –

相關問題