某些区域设置的Android Parse Exception

时间:2018-03-06 10:28:21

标签: java android locale

我正在尝试在Android上格式化日期,但遇到的地方是“无法解析日期”,但只针对某些语言环境。为每个区域设置尝试相同的日期。在英语中工作正常但在我将设备切换到DE时失败。

以下是我的代码:

Locale locale = mContext.getResources().getConfiguration().locale;
String dateStr = "07 Mar 2018";
SimpleDateFormat parser = new SimpleDateFormat("dd MMM yyyy", locale);
Date thedate = parser.parse(dateStr);
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM", locale);
String dateStrReformatted = formatter.format(thedate);

我已尝试指定当前的Locale但这没有效果。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试解析始终使用英语的date

String dateStr = "07 Mar 2018";

因此,在解析时,您可以使用英语作为区域设置来获取date并使用您的首选语言对其进行格式化

String dateStr = "07 Mar 2018";
SimpleDateFormat parser = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
Date englishDate = parser.parse(dateStr);

要获取上述string使用

的本地格式化date
Locale locale = mContext.getResources().getConfiguration().locale;
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM", locale);
String dateStrReformatted = formatter.format(englishDate);