ParseException:无法解析的日期:"Wed, 22 Apr 2015 05:45:42 GMT"
ParseException: Unparseable date: "Wed, 22 Apr 2015 05:45:42 GMT"
我正在尝试将 "Wed, 22 Apr 2015 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'");
在日期格式中使用小 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();
}
我可以重现你的问题,因为我也坐在非英语国家。解决方案是将英语指定为语言,因为您的输入包含英语 word/abbreviation(查看星期几 "Wed"!)。以下解决方案有效:
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
-object.
我正在尝试将 "Wed, 22 Apr 2015 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'");
在日期格式中使用小 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();
}
我可以重现你的问题,因为我也坐在非英语国家。解决方案是将英语指定为语言,因为您的输入包含英语 word/abbreviation(查看星期几 "Wed"!)。以下解决方案有效:
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
-object.