2015-06-15 2 views
-3

Я пытаюсь создать список на основе даты. Я продолжаю получать исключение из Parse. Я думал, что у меня есть даты в том же формате. Может, я что-то пропустил. Я играл с этим в течение нескольких часов без успеха. Любая помощь будет оценена по достоинству.Непревзойденная дата. Parse Exception, сравнивая две даты

public static List<String> getMonthlyDates(Date startdate, Date enddate) { 
    List<String> dates = new ArrayList<String>(); 
    Calendar calendar = new GregorianCalendar(); 


    calendar.setTime(startdate); 

    while (calendar.getTime().before(enddate)) { 
     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
     String result = df.format(calendar.getTime()); 
     dates.add(result); 
     calendar.add(Calendar.MONTH, 1); 
    } 
    return dates; 
} 

Calendar Mcalendar = Calendar.getInstance(); 
String dd = editbillduedate.getText().toString(); 
    //Which shows correctly in the format of 2015-Jun-15 
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
    //it makes no difference if format is yyyy-mm-dd 
Date date; 
     try { 
//THIS LINE BELOW IS WHERE I AM GETTING THE ERROR 
      date = format.parse(dd); 
      Mcalendar.add(Calendar.DAY_OF_YEAR, 365); 
      final Date newDate2 = Mcalendar.getTime(); 

      List<String> dateList = getMonthlyDates(date, newDate2); 

      for (final String d1 : dateList) { 
      //Does something irrelevant 

      } 
      } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 
+0

Какие струны вы стали на этой строке 'Строка dd = editbillduedate.getText(). toString(); '? не могли бы вы отладить и вставить мне значение переменной 'dd'? –

+0

java.text.ParseException: Непревзойденная дата: «2015-Jun-15» (на офсет 5) – SmulianJulian

+1

Я думаю, что я понял, пожалуйста, взгляните на мой ответ ниже :) –

ответ

1

Если вы хотите, чтобы разобрать даты в том же формате, как 2015-Jun-15, вы должны изменить ваши SimpleDateFormat иметь трех символов для месяца элемента, как это: yyyy-MMM-dd. Так это изменить:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

к:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MMM-dd"); 

и это:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 

к:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MMM-dd"); 
+0

Хорошо, ладно. Возможно, я действительно заслужил пару downvotes. Теперь я понимаю. MM - числовое число, справа. MMM - это первые три буквы месяца. EditText был в формате MMM, и я просил MM. Попался ... ничего себе. Я не могу поверить, что потратил 2 часа на то, что должно было занять 5 секунд. Благодарю. – SmulianJulian

+0

: D Да, иногда так бывает :) Радуйтесь :) И постарайтесь не заботиться о ниспровержениях, потому что ненавистники повсюду .... –

Смежные вопросы