2017-01-25 7 views
0

Funciton я используюAndroid Дата Невозможно проанализировать: 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) 
+0

Можете ли вы опубликовать всю трассировку стека? –

+0

Также вы можете поделиться кодом, в котором вы вызываете этот метод? –

+0

Да, вы правы. Просто попробуйте не пропустить язык. –

ответ

0

Вы пытаетесь разобрать дату от локали зависит от формата "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; 
}