ParseException:Unparseable date:" Wed,22 Apr 2015 05:45:42 GMT"

时间:2015-04-23 10:45:46

标签: android date-format simpledateformat

我试图改变"周三,2015年4月22日05:45:42 GMT"到" yyyy MM dd - HH:mm"

但是这个字符串不适合所有这些简单格式,它在所有这三个

中都有例外
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'");

2 个答案:

答案 0 :(得分:2)

我可以重现你的问题,因为我也坐在非英语国家。解决方案是将英语指定为语言,因为您的输入包含英语单词/缩写(查看星期几和#34;星期三"!)。以下解决方案有效:

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 - 对象上。

答案 1 :(得分: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();
    }