将日期解析为不同的语言环境不起作用

Parsing a date into a different locale doesn't work

我正在尝试将日期解析为不同的语言环境。所以不是 10 月 31 日星期一,而是 Lundi 31 Octobre(法语)。我正在使用 official Android documentation 建议的 DateFormat class。所以基本上这是我正在使用的代码片段:

dateFormat = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
dateFormat.parse(myCalendar.getTime().toString())

但是当我执行它时它抛出了一个解析异常。

myCalendar.getTime().toString() 产生 Mon Oct 31 12:27:08 GMT+03:00 2016

我认为是正确的我不明白为什么 dateFormat 不能正确解析它。

所以你的问题是你试图解析一个日期但是你为格式化程序提供了错误的格式。 您可以使用 dateFormat.format 方法,而不是将日历日期转换回字符串然后解析它。

Calendar myCalendar = Calendar.getInstance();
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, Locale.FRANCE);
Log.d("Time",dateFormat.format(myCalendar.getTime()));

输出将是

jeudi 3 novembre 2016

您可以尝试更改样式或使用 SimpleDateFormat 的格式,并定义适合您需要的输出格式。

您可以尝试类似的方法:

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zZ yyyy", Locale.FRANCE);
dateFormat.parse(myCalendar.getTime().toString());