将日期添加到日历不会更新月份

时间:2016-11-16 11:01:18

标签: java android android-calendar

我正在开发一个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());
}

但是代码没有增加月份。

  

实施例。如果用户选择01/11/2016,则日期会增加并保存   29/11/2016。但如果用户选择16/11/2016,则保存日期为   28/11/2016但这应该是2016年12月14日

4 个答案:

答案 0 :(得分:1)

尝试使用:

calendar.add(Calendar.DAY_OF_YEAR, 28);

答案 1 :(得分:1)

第1步

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

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

c.add(Calendar.DATE, 40); 

答案 2 :(得分: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();

答案 3 :(得分:0)

您的问题可能已在此处得到答案:How can I increment a date by one day in Java?

或者你可以简单地使用

c.add(Calendar.DATE, 28);

而不是

c.add(Calendar.DAY_OF_MONTH, 28);