添加到日历日期...不准确?

时间:2012-11-06 18:11:22

标签: java android

任何人都可以帮忙。 我正在从日历中确定当前日期。 然后,我想通过添加月数将字符串设置为新日期.. 当我使用以下代码时,它可以在我添加12个月后使用, 但是当我尝试添加1个月时,下一个日期是1月(+ 2个月) 当我尝试添加3个月时,下一个日期是4月。 6个月,下一个日期是2013年10月等.... 当试图添加24,36或48个月时,它几乎可以工作,但提前1个月。 似乎没有关于日期变化的模式

//Get Current date and set as text
    Calendar c = Calendar.getInstance();
    c.add(Calendar.MONTH, Retest);        // Months to Date
    int day = c.get(Calendar.DATE);
    int month = c.get(Calendar.MONTH);  
    int year = c.get(Calendar.YEAR);

    if (month<=9)  { MONTH$ = "0"+month   ;}
    else {MONTH$ = ""+month;               }    //Set month to MM

   NextTest$ = ""+day+"/"+MONTH$+"/"+year;    //Put date ints into string DD/MM/YYYY

   Toast.makeText(this, "Re-Test Due.. "+NextTest$, Toast.LENGTH_SHORT).show();

2 个答案:

答案 0 :(得分:2)

在Calender API中,January映射到0,因此10月映射到9.因此,如果您尝试根据人类日历查找当前月份,那么将1添加到java日历的月份值,然后只计算值。

int day = c.get(Calendar.DATE);
    int month = c.get(Calendar.MONTH) + 1; //It should work for you.  
    int year = c.get(Calendar.YEAR);

答案 1 :(得分:1)

根据Java Docs,如果任何值传递给Calender的Add Function,则大于Field的值,而不是它将添加模数。请参阅GregorianCalender文档