2016-11-16 87 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〜2016年1月11日是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

謝謝。這工作 –