将日期添加到日历不是正在更新月

问题描述:

我正在开发一个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

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

步骤2使用添加()添加天数日历

尝试使用这样的:

calendar.add(Calendar.DAY_OF_YEAR, 28); 

它为我工作。

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

谢谢。这工作 –

你的问题可能已经在这里回答:How can I increment a date by one day in Java?

或者你可以简单地使用

c.add(Calendar.DATE, 28); 

,而不是

c.add(Calendar.DAY_OF_MONTH, 28);