Android Unparsable Дата: 6 января 2017 г.
Я использую функцию
public static String getFormatedDate(String dateVal) {
String tempDate = null;
Locale systemLocale = Locale.getDefault();
try {
SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy",
systemLocale);
Date date = (Date) formatter.parse(dateVal);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
tempDate = sdf.format(date);
} catch (Exception e) {
ApplicationLog.log(TAG, e);
}
return tempDate;
}
Во многих устройствах эта функция работает правильно, но на одном из устройств возникает исключение при разборе даты. Это исключение как-то связано с Locale.getDefault()
?. Если да, какие изменения я должен сделать? Благодарю.
Вызов функции
Utilities.getFormatedDate(date);
И исключение...
Utilities:java.text.ParseException: Unparseable date: "Jan 06, 2017" (at offset 0)
at java.text.DateFormat.parse(DateFormat.java:579)
1 ответ
Решение
Вы пытаетесь разобрать дату в зависимости от локали "MMM dd, yyyy"
и настройка языкового стандарта системы. Попробуйте передать локаль, которая соответствует вашему формату. Например Locale.US
, Измените свой метод, как это,
public static String getFormatedDate(String dateVal) {
String tempDate = null;
try {
SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy",
Locale.US);
Date date = (Date) formatter.parse(dateVal);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
tempDate = sdf.format(date);
} catch (Exception e) {
ApplicationLog.log(TAG, e);
}
return tempDate;
}