2016-12-03 216 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); 
     } 

问题是关于 '月' 的月份。您的设备中已有其他语言环境

相关问题