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;
}
Другие вопросы по тегам