关于java:什么是EEE的日期格式,dd MMM yyyy HH:mm:ssZ?

What is date format of EEE, dd MMM yyyy HH:mm:ssZ?

本问题已经有最佳答案,请猛点这里访问。

我试图在Android上解析这个:

1
Fri, 02 Oct 2015 10:01:00+0300

使用此格式EEE, dd MMM yyyy HH:mm:ssZ,但不起作用。

1
2
3
4
5
6
7
8
9
10
item_date ="Fri, 02 Oct 2015 18:07:00+0300";
SimpleDateFormat curFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ssZ");

Date dateObj = null;
String newDateStr = item_date;
try {
  dateObj = curFormater.parse(item_date);
} catch (ParseException e) {
  e.printStackTrace();
}


为了将String解析为包含某些单词(例如月份)的Date,您需要一个与这些单词的语言相对应的适当Locale。 由于它们在您的示例中是英语,因此您可以使用特定于语言的区域设置(如java.util.Locale.ENGLISH)或特定于国家/地区的区域设置,例如java.util.Locale.USLocale.UK

由于您可以将Locale传递给SimpleDateFormat构造函数,因此您的实例化可能如下所示:

1
SimpleDateFormat curFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ssZ", Locale.ENGLISH);

如果您想知道当前使用的Locale中允许的日期格式单词,那么您可以尝试使用DateFormatSymbols类的以下代码段:

1
2
DateFormatSymbols dfs = new DateFormatSymbols();
System.out.println(Arrays.toString(dfs.getShortMonths()));

此类提供相应的方法来获取月份,缩写月份或工作日。
您还可以将Locale传递给DateFormatSymbols构造函数,以从特定区域设置中获取这些字符串。