Java 正在添加到日历日期。。。不准确?

Java 正在添加到日历日期。。。不准确?,java,android,Java,Android,谁能帮忙吗。 我正在从日历中获取当前日期。 然后,我想通过添加月数将字符串设置为新日期。。 当我使用以下代码时,它在我添加12个月的日期时起作用, 但当我尝试添加1个月时,下一个日期是1月(+2个月) 当我尝试添加3个月时,下一个日期是4月。 6个月,下一个日期是2013年10月等。。。。 当尝试增加24个月、36个月或48个月时,它几乎有效,但提前了1个月。 日期的变化似乎没有规律可循 //Get Current date and set as text Calendar c = Ca

谁能帮忙吗。 我正在从日历中获取当前日期。 然后,我想通过添加月数将字符串设置为新日期。。 当我使用以下代码时,它在我添加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();
//获取当前日期并设置为文本
Calendar c=Calendar.getInstance();
c、 添加(日历月,重新测试);//至今数月
int day=c.get(日历日期);
int month=c.get(日历月);
int year=c.get(日历年);

如果(month根据Java文档,如果有任何值被传递到Calendar的Add函数,则该值大于该字段的值,它将添加该值的模。Calendar API中的Reference Docs

一月被映射为0,因此十月被映射为9。因此,如果您试图根据人类日历找出当前月份,那么将1添加到Java Calendar的s月值,然后仅计算该值

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月30日+1个月应该是什么?您不需要做所有这些,只需使用带有“dd/MM/yyyy”模式的
DateFormat
。当我使用
Retest=1
运行代码时,我得到2013年12月6日(
6/11/2012
以0为基础的月份).
restest=2
,我得到2013年1月6日。
restest=3
,我得到2013年2月6日。正如Jon所说,您需要向我们提供一些输入和输出示例,并可能显示如何定义
restest
。您提供的代码没有显示您在JDK6中描述的行为。编辑:他所说的^Isntead of
Calendar
同学们,你们为什么不使用能更真实地了解地球日期和时间的
joda time
。并同意@JonSkeet先生关于信息丢失的观点。同时想想他问的问题。@Coops5575我的解决方案对你们有用吗?或者你们在找别的什么?