Исключение синтаксического анализа даты в java java.text.ParseException

#java #android

#java #Android

Вопрос:

Моя строка даты — «17 октября 2016 г. 12:17 вечера», а мой метод анализа даты -:

 public static String formatDate(String dateString) {
    String stringDate = "";
    try {
        //Mar 11 2016 2:21PM
        if (dateString != null) {
            SimpleDateFormat dt = new SimpleDateFormat("MMM dd yyyy hh:mma");

            Date date = dt.parse(dateString);

            // *** same for the format String below
            SimpleDateFormat dt1 = new SimpleDateFormat("EEE , hh:mm a");
            stringDate = dt1.format(date);
        }
        return stringDate;
    } catch (ParseException parseException) {
        Log.e("date format", ""   parseException.getMessage());
    }
    return stringDate;
}
 

Он отлично работает с английским языком, но когда я меняю язык своего приложения на хинди или любой другой, я получаю исключение.

 java.text.ParseException: Unparseable date: "Oct 17 2016 12:17PM" (at offset 0)
 

Что я делаю?

Комментарии:

1. Синтаксический анализ даты зависит от языка. Это проблема локали. Здесь много повторяющихся сообщений об этом

Ответ №1:

Вам нужно установить языковой стандарт английский

 SimpleDateFormat dt = new SimpleDateFormat("MMM dd yyyy hh:mma", Locale.ENGLISH);
 

Ответ №2:

  public class Practice {
 public static void main(String...args) {
 String day,month, finalDay;
 try {
 DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
 String  currentDateTimeString = df.format(new Date());


     //String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
     SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
     Date date = format.parse(currentDateTimeString);


     SimpleDateFormat dayFormat = new SimpleDateFormat("dd");


     day = dayFormat.format(date);


     SimpleDateFormat monthFormat = new SimpleDateFormat("MM");

     month = monthFormat.format(date);
     System.out.print("My day"  day);
     System.out.println("My month"  month);




 } catch (Exception e) {
     System.out.println("Hello exception "  e.getMessage());
     e.printStackTrace();
 }
 

}
}