1

任何人都可以请帮忙。我正在从日历中获取当前日期。然后我想通过添加月数将字符串设置为新日期。当我使用以下代码时,当我添加 12 个月时它可以工作,但是当我尝试添加 1 个月时,下一个日期是 1 月( +2 个月)当我尝试增加 3 个月时,下一个日期是四月。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();
4

2 回答 2

2

在 Calender API 中,1 月映射为 0,因此 10 月映射为 9。因此,如果您试图根据人工日历找出当前月份,则在 java 日历的月份值上加 1,然后只计算该值。

int day = c.get(Calendar.DATE);
    int month = c.get(Calendar.MONTH) + 1; //It should work for you.  
    int year = c.get(Calendar.YEAR);
于 2012-11-06T18:38:25.060 回答
1

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

于 2012-11-06T18:28:10.760 回答