2016-12-03 217 views
0

我試圖以Sat Dec 03 20:30:33 GMT+00:00 2016格式解析String值到Date變量,但我得到一個java.text.ParseException: Unparseable date: "Sat Dec 03 20:30:33 GMT+00:00 2016" (at offset 0)異常。我在這裏做錯了什麼?爲什麼我的字符串變量「unparseable」通過SimpleDateFormat到Date?

Date itemDate = new Date(); 
     DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss"); 
     try { 
      itemDate = df.parse(c.getString(c.getColumnIndexOrThrow(ArticlesContract.ArticleEntry.COLUMN_NAME_DATE))); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+1

首先,您當前的語言環境是什麼?其次,你在哪裏解析字符串的末尾,即'GMT + 00:00 2016'? – Tunaki

+0

@Tunaki老實說,我不確定,但我認爲它是pt_PT的語言環境。至於字符串的結尾,是否與此錯誤有關?我不確定如何解析該部分,因此我稍後將其留下。 – KaiZ

+0

沒有那第二部分將是你的下一個錯誤。目前的錯誤是「週六」不能被理解爲葡萄牙的一週。另請參閱http://stackoverflow.com/a/23790945/1743880,您需要更改格式化程序使用的語言環境。 – Tunaki

回答

0

週六12月3二十時30分33秒GMT + 00:00 2016

是一個像 「星期六」 和 「月」 的一些語言環境相關的元素串

因此

你有要做到:

DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss", Locale.ENGLISH); 

那麼一定要使用的模式是要分析的字符串匹配...

在我們的例子中,我們看到這個:「EEE MMM dd HH:mm:ss」 但是要解析的字符串有例如...所以您需要解析該信息以及在正確的位置添加一年組件YYYY

1

這個作品

private static void test1() { 
      Date itemDate = new Date(); 
      DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss", Locale.ENGLISH); 
      try { 
       itemDate = df.parse("Sat Dec 03 20:30:33"); 
//"Sat Dec 03 20:30:33 GMT+00:00 2016" works too. 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      System.out.println(itemDate); 
     } 

問題是關於 '月' 的月份。您的設備中已有其他語言環境

相關問題