2016-11-16 4 views
1

Я работаю над приложением android и новым для него.добавление даты в календарь не обновляется месяц

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

Это то, что я сделал до сих пор

private void saveDate() throws ParseException { 
    DatabaseHelper db = new DatabaseHelper(ActivityPeriodToday.this.getActivity()); 

    String pDate = periodDate.getText().toString().trim(); 
    String pTime = periodTime.getText().toString().trim(); 
    String next_expected = getNextExpected(pDate); 

    boolean isInserted = db.insertPeriodTodayIntoPeriods(pDate, pTime, early_late, pDifference, pType, next_expected); 

    if (isInserted == true) { 
     Toast.makeText(ActivityPeriodToday.this.getActivity(), "Saved", Toast.LENGTH_SHORT).show(); 

    } else { 
     Toast.makeText(ActivityPeriodToday.this.getActivity(), "Could not be saved", Toast.LENGTH_SHORT).show(); 
    } 

} 

private String getNextExpected(String pDate) { 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
    Calendar c = Calendar.getInstance(); 
    try { 
     c.setTime(sdf.parse(pDate)); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    c.add(Calendar.DAY_OF_MONTH, 28); 
    return sdf.format(c.getTime()); 
} 

Но код не увеличивающийся месяца.

Ex. Если пользователь выбирает 01/11/2016, дата увеличивается и сохраняется 29/11/2016. Но если пользователь выбирает 16/11/2016 затем сохраняет дата 28/11/2016, но это должно быть 14/12/2016

+0

Почему добавление 28 до 01/11/2016 28/11/2016? Разве это не должно быть 29/11/2016? – Marat

+0

Вы уверены, что получаете результат неправильно? Может быть, вы проверяете неправильный столбец или строку? Потому что ваш код в порядке, и он работает. – Marat

ответ

1

Шаг 1

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
      Calendar c = Calendar.getInstance(); 
      c.setTime(sdf.parse(dateInString)); 

Шаг 2 использование надстройки(), чтобы добавить количество дней в календарь

1

Попробуйте использовать это:

calendar.add(Calendar.DAY_OF_YEAR, 28); 
0

Его Работа для меня.

Calendar c = Calendar.getInstance(); 
      int Year = c.get(Calendar.YEAR); 
      int Month = c.get(Calendar.MONTH); 
      int Day = c.get(Calendar.DAY_OF_MONTH); 
      // current date 
      String CurrentDate = Year + "/" + Month + "/" + Day; 
      String dateInString = CurrentDate; // Start date 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
      c = Calendar.getInstance(); 
      try { 
       c.setTime(sdf.parse(dateInString)); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      c.add(Calendar.DATE, 28);//insert the number of days that you want 
      sdf = new SimpleDateFormat("dd/MM/yyyy"); 
      Date resultdate = new Date(c.getTimeInMillis()); 
      dateInString = sdf.format(resultdate); 
      Toast.makeText(MainActivity.this, ""+dateInString, Toast.LENGTH_SHORT).show(); 
+0

Спасибо. Это сработало –

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

  • Нет связанных вопросов^_^